functor   (L : ParseLocation.S) (I : Id) (T : sig                                         type t                                         val tType : t                                         val wildcard : t                                         val prop : t                                         val true_ : t                                         val false_ : t                                         val const : ?loc:L.t -> I.t -> t                                         val apply :                                           ?loc:L.t -> t -> t list -> t                                         val colon : ?loc:L.t -> t -> t -> t                                         val arrow : ?loc:L.t -> t -> t -> t                                         val eq : ?loc:L.t -> t -> t -> t                                         val not_ : ?loc:L.t -> t -> t                                         val or_ : ?loc:L.t -> t list -> t                                         val and_ : ?loc:L.t -> t list -> t                                         val imply : ?loc:L.t -> t -> t -> t                                         val equiv : ?loc:L.t -> t -> t -> t                                         val pi : ?loc:L.t -> t list -> t -> t                                         val letin :                                           ?loc:L.t -> t list -> t -> t                                         val forall :                                           ?loc:L.t -> t list -> t -> t                                         val exists :                                           ?loc:L.t -> t list -> t -> t                                       end) (S : sig                                                   type t                                                   val data :                                                     ?loc:L.t -> t list -> t                                                   val decl :                                                     ?loc:L.t ->                                                     I.t -> T.t -> t                                                   val definition :                                                     ?loc:L.t ->                                                     I.t -> T.t -> T.t -> t                                                   val inductive :                                                     ?loc:L.t ->                                                     I.t ->                                                     T.t list ->                                                     (I.t * T.t list) list ->                                                     t                                                   val rewrite :                                                     ?loc:L.t ->                                                     ?attr:T.t -> T.t -> t                                                   val goal :                                                     ?loc:L.t ->                                                     ?attr:T.t -> T.t -> t                                                   val assume :                                                     ?loc:L.t ->                                                     ?attr:T.t -> T.t -> t                                                 end->   sig     type token     type statement = S.t     module Lexer : sig exception Error val token : Lexing.lexbuf -> token end     module Parser :       sig         exception Error         val file :           (Lexing.lexbuf -> token) -> Lexing.lexbuf -> statement list         val input :           (Lexing.lexbuf -> token) -> Lexing.lexbuf -> statement option         module MenhirInterpreter :           sig             type token = token             type env             type production             type 'a checkpoint = private                 InputNeeded of env               | Shifting of env * env * bool               | AboutToReduce of env * production               | HandlingError of env               | Accepted of 'a               | Rejected             val offer :               'a checkpoint ->               token * Lexing.position * Lexing.position -> 'a checkpoint             val resume : 'a checkpoint -> 'a checkpoint             type supplier = unit -> token * Lexing.position * Lexing.position             val lexer_lexbuf_to_supplier :               (Lexing.lexbuf -> token) -> Lexing.lexbuf -> supplier             val loop : supplier -> 'a checkpoint -> 'a             val loop_handle :               ('-> 'answer) ->               ('a checkpoint -> 'answer) ->               supplier -> 'a checkpoint -> 'answer             val loop_handle_undo :               ('-> 'answer) ->               ('a checkpoint -> 'a checkpoint -> 'answer) ->               supplier -> 'a checkpoint -> 'answer             val loop_test :               (env -> 'accu -> 'accu) -> 'a checkpoint -> 'accu -> 'accu             val acceptable :               'a checkpoint -> token -> Lexing.position -> bool             type 'a lr1state             val number : 'a lr1state -> int             type element =                 Element : 'a lr1state * 'a * Lexing.position *                   Lexing.position -> element             type stack = element MenhirLib.General.stream             val stack : env -> stack             val positions : env -> Lexing.position * Lexing.position             val has_default_reduction : env -> bool           end         module Incremental :           sig             val input :               Lexing.position ->               statement option MenhirInterpreter.checkpoint           end       end     val find : ?dir:string -> string -> string option     val parse_file : string -> statement list     val parse_input :       [ `File of string | `Stdin ] -> unit -> statement option   end