Module Sidekick_base_solver.Solver
SMT solver, obtained from Sidekick_smt_solver
module T : sig ... endmodule Lit : sig ... endtype proof= Solver_arg.proof
module P : sig ... endmodule Solver_internal : sig ... endtype t= Sidekick_smt_solver.Make(Solver_arg).ttype solver= ttype term= T.Term.ttype ty= T.Ty.ttype lit= Lit.ttype dproof= proof -> unit
module type THEORY = sig ... endval mk_theory : name:string -> create_and_setup:(Solver_internal.t -> 'th) -> ?push_level:('th -> unit) -> ?pop_levels:('th -> int -> unit) -> unit -> theory
module Model : sig ... endmodule Unknown : sig ... endval stats : t -> Sidekick_util.Stat.tval tst : t -> T.Term.storeval ty_st : t -> T.Ty.storeval create : ?stat:Sidekick_util.Stat.t -> ?size:[ `Big | `Small | `Tiny ] -> proof:proof -> theories:theory list -> T.Term.store -> T.Ty.store -> unit -> tval add_theory : t -> theory -> unitval add_theory_p : t -> 'a theory_p -> 'aval add_theory_l : t -> theory list -> unitval mk_lit_t : t -> ?sign:bool -> term -> litval add_clause : t -> lit Sidekick_util.IArray.t -> dproof -> unitval add_clause_l : t -> lit list -> dproof -> unitval assert_terms : t -> term list -> unitval assert_term : t -> term -> unit
type res= Sidekick_smt_solver.Make(Solver_arg).res=|Sat of Model.t|Unsat of{unsat_core : unit -> lit Iter.t;}|Unknown of Unknown.t