sig
  val debug : bool Pervasives.ref
  val continue_on_error : bool Pervasives.ref
  val continue_without_asking : bool Pervasives.ref
  val timingFlag : bool Pervasives.ref
  type state
  type proofgen = {
    start : unit -> unit;
    startVC : string -> unit;
    assume : Util.symbol -> Logic.pred -> unit;
    unassume : unit -> unit;
    pick : string -> unit;
    unpick : unit -> unit;
    conjunct : Logic.pred -> Proof.proof -> unit;
    choose : thechoice:int -> nrchoices:int -> unit;
    finish : unit -> unit;
    finishVC : unit -> unit;
  }
  val start : Satproc.entries list -> Engine.proofgen -> Engine.state
  val proveGoal : string -> Engine.state -> (unit -> Input.input) -> unit
  val finish : Engine.state -> unit
  exception Failure
  class type uiType =
    object
      method assume : Util.symbol -> Logic.pred -> unit
      method enterBlock :
        (Util.symbol * Logic.pred) list -> (string * string) list -> unit
      method exitBlock : unit
      method goal_failure : Logic.pred -> unit
      method goal_success : Logic.pred -> Proof.proof -> unit
      method name : string
      method options : Options.optionDescr list
      method run : unit
      method start_goal : Logic.pred -> unit
      method unassume : unit
    end
  val theUI : Engine.uiType Pervasives.ref
  val printInfix : bool Pervasives.ref
  val d_exp : unit -> Logic.exp -> Pretty.doc
  val d_pred : unit -> Logic.pred -> Pretty.doc
end