functor   (L : ParseLocation.S) (I : Id) (T : sig                                         type t                                         val const : ?loc:L.t -> I.t -> t                                         val int : ?loc:L.t -> string -> t                                         val real : ?loc:L.t -> string -> t                                         val hexa : ?loc:L.t -> string -> t                                         val binary : ?loc:L.t -> string -> t                                         val colon : ?loc:L.t -> t -> t -> t                                         val apply :                                           ?loc:L.t -> t -> t list -> 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                                         val sexpr : ?loc:L.t -> t list -> t                                         val annot :                                           ?loc:L.t -> t -> t list -> t                                       end) (S : sig                                                   type t                                                   val pop :                                                     ?loc:L.t -> int -> t                                                   val push :                                                     ?loc:L.t -> int -> t                                                   val assert_ :                                                     ?loc:L.t -> T.t -> t                                                   val check_sat :                                                     ?loc:L.t -> unit -> t                                                   val set_logic :                                                     ?loc:L.t -> string -> t                                                   val get_info :                                                     ?loc:L.t -> string -> t                                                   val set_info :                                                     ?loc:L.t ->                                                     string * T.t option -> t                                                   val get_option :                                                     ?loc:L.t -> string -> t                                                   val set_option :                                                     ?loc:L.t ->                                                     string * T.t option -> t                                                   val type_decl :                                                     ?loc:L.t ->                                                     I.t -> int -> t                                                   val type_def :                                                     ?loc:L.t ->                                                     I.t ->                                                     I.t list -> T.t -> t                                                   val fun_decl :                                                     ?loc:L.t ->                                                     I.t ->                                                     T.t list -> T.t -> t                                                   val fun_def :                                                     ?loc:L.t ->                                                     I.t ->                                                     T.t list ->                                                     T.t -> T.t -> t                                                   val get_proof :                                                     ?loc:L.t -> unit -> t                                                   val get_unsat_core :                                                     ?loc:L.t -> unit -> t                                                   val get_value :                                                     ?loc:L.t -> T.t list -> t                                                   val get_assignment :                                                     ?loc:L.t -> unit -> t                                                   val get_assertions :                                                     ?loc:L.t -> unit -> t                                                   val exit :                                                     ?loc:L.t -> unit -> 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