sig
  type 'a t
  val ( >>= ) :
    'InterpreterM.t -> ('-> 'InterpreterM.t) -> 'InterpreterM.t
  val ( >> ) : 'InterpreterM.t -> 'InterpreterM.t -> 'InterpreterM.t
  val return : '-> 'InterpreterM.t
  val run : 'InterpreterM.t -> 'a
  val raise : string -> 'InterpreterM.t
  val ( >?> ) :
    'InterpreterM.t -> (string -> 'InterpreterM.t) -> 'InterpreterM.t
  val write : string -> unit InterpreterM.t
  val write_line : string -> unit InterpreterM.t
  val read_line : string InterpreterM.t
  val file_exists : string -> bool InterpreterM.t
  val read_file : string -> string Lst.t InterpreterM.t
  val write_file : string -> char Lst.t -> bool InterpreterM.t
  val set_verbose : bool -> unit InterpreterM.t
  val get_verbose : bool InterpreterM.t
  val set_strategy :
    Strng.t ->
    (CoreML.t -> (CoreML.pos * CoreML.t) list) -> unit InterpreterM.t
  val get_strategy_name : Strng.t InterpreterM.t
  val get_strategy_function :
    (CoreML.t -> (CoreML.pos * CoreML.t) list) InterpreterM.t
  val set_trace_steps : bool -> unit InterpreterM.t
  val get_trace_steps : bool InterpreterM.t
  val set_simple_output : bool -> unit InterpreterM.t
  val get_simple_output : bool InterpreterM.t
  val get_coreml_converter : (CoreML.t -> Strng.t) InterpreterM.t
  val get_coreml_mark_converter :
    (CoreML.pos list -> CoreML.t -> Strng.t) InterpreterM.t
  val set_typing : bool -> unit InterpreterM.t
  val get_typing : bool InterpreterM.t
  val set_record : bool -> unit InterpreterM.t
  val get_record : bool InterpreterM.t
  val set_template : Session.template -> unit InterpreterM.t
  val get_template : Session.template InterpreterM.t
  val has_type : CoreML.t -> bool InterpreterM.t
  val get_type : CoreML.t -> Type.t InterpreterM.t
  val get_types : (CoreML.t * Type.t) St.t InterpreterM.t
  val add_type : CoreML.t -> Type.t -> unit InterpreterM.t
  val del_type : CoreML.t -> unit InterpreterM.t
  val has_var : Strng.t -> bool InterpreterM.t
  val get_var : Strng.t -> CoreML.t InterpreterM.t
  val get_vars : (Strng.t * CoreML.t) St.t InterpreterM.t
  val add_var : Strng.t -> CoreML.t -> unit InterpreterM.t
  val del_var : Strng.t -> unit InterpreterM.t
  val get_session : Session.t InterpreterM.t
  val reset_session : unit InterpreterM.t
  val session_add : CoreML.t -> CoreML.t -> unit InterpreterM.t
  val session_add_trace :
    CoreML.t ->
    (CoreML.t * CoreML.pos list) list -> CoreML.t -> unit InterpreterM.t
  val session_addt : CoreML.t -> CoreML.t -> Type.t -> unit InterpreterM.t
  val session_addt_trace :
    CoreML.t ->
    (CoreML.t * CoreML.pos list) list ->
    CoreML.t -> Type.t -> unit InterpreterM.t
end