sig
  type proof_step = Logtk.Proof.Step.t
  type proof = Logtk.Proof.t
  type result = Sat | Unsat of proof
  exception WrongState of string
  module type S =
    sig
      module Lit = BBox.Lit
      exception UndecidedLit
      type clause = Lit.t list
      val add_clause : proof:proof_step -> Lit.t list -> unit
      val add_clauses : proof:proof_step -> Lit.t list list -> unit
      val add_clause_seq : proof:proof_step -> Lit.t list Sequence.t -> unit
      val check : full:bool -> unit -> result
      val last_result : unit -> result
      val valuation : Lit.t -> bool
      val valuation_level : Lit.t -> bool * int
      val proved_at_0 : Lit.t -> bool option
      val all_proved : unit -> Lit.Set.t
      val set_printer : Lit.t CCFormat.printer -> unit
      val get_proof : unit -> proof
      val get_proof_opt : unit -> proof option
      val get_proof_of_lit : Lit.t -> proof
      val setup : unit -> unit
    end
  module Make : functor (Dummy : sig  end-> S
  val set_compact : bool -> unit
end