sig
  type 'a t
  val add : 'SrkZ3.Solver.t -> 'Syntax.formula list -> unit
  val push : 'SrkZ3.Solver.t -> unit
  val pop : 'SrkZ3.Solver.t -> int -> unit
  val reset : 'SrkZ3.Solver.t -> unit
  val check :
    'SrkZ3.Solver.t ->
    'Syntax.formula list -> [ `Sat | `Unknown | `Unsat ]
  val to_string : 'SrkZ3.Solver.t -> string
  val get_model :
    ?symbols:Syntax.symbol list ->
    'SrkZ3.Solver.t ->
    [ `Sat of 'Interpretation.interpretation | `Unknown | `Unsat ]
  val get_concrete_model :
    'SrkZ3.Solver.t ->
    Syntax.symbol list ->
    [ `Sat of 'Interpretation.interpretation | `Unknown | `Unsat ]
  val get_unsat_core :
    'SrkZ3.Solver.t ->
    'Syntax.formula list ->
    [ `Sat | `Unknown | `Unsat of 'Syntax.formula list ]
end