Module Msat
Main API
module Solver_intf : sig ... endInterface for Solvers
module type S = Solver_intf.Smodule type FORMULA = Solver_intf.FORMULAmodule type EXPR = Solver_intf.EXPRmodule type PLUGIN_CDCL_T = Solver_intf.PLUGIN_CDCL_Tmodule type PLUGIN_MCSAT = Solver_intf.PLUGIN_MCSATmodule type PROOF = Solver_intf.PROOFtype void= (unit, bool) Solver_intf.gadt_eqEmpty type
type lbool= Solver_intf.lbool=|L_true|L_false|L_undefinedtype ('term, 'form, 'value) sat_state= ('term, 'form, 'value) Solver_intf.sat_state={eval : 'form -> bool;eval_level : 'form -> bool * int;iter_trail : ('form -> unit) -> ('term -> unit) -> unit;model : unit -> ('term * 'value) list;}type ('atom, 'clause, 'proof) unsat_state= ('atom, 'clause, 'proof) Solver_intf.unsat_state={unsat_conflict : unit -> 'clause;get_proof : unit -> 'proof;unsat_assumptions : unit -> 'atom list;}type 'clause export= 'clause Solver_intf.export={hyps : 'clause Vec.t;history : 'clause Vec.t;}type ('term, 'formula, 'value) assumption= ('term, 'formula, 'value) Solver_intf.assumption=|Lit of 'formulaThe given formula is asserted true by the solver
|Assign of 'term * 'valueThe term is assigned to the value
type ('term, 'formula, 'proof) reason= ('term, 'formula, 'proof) Solver_intf.reason=|Eval of 'term list|Consequence of unit -> 'formula list * 'prooftype ('term, 'formula, 'value, 'proof) acts= ('term, 'formula, 'value, 'proof) Solver_intf.acts={acts_iter_assumptions : (('term, 'formula, 'value) assumption -> unit) -> unit;acts_eval_lit : 'formula -> lbool;acts_mk_lit : 'formula -> unit;acts_mk_term : 'term -> unit;acts_add_clause : ?keep:bool -> 'formula list -> 'proof -> unit;acts_raise_conflict : b. 'formula list -> 'proof -> 'b;acts_propagate : 'formula -> ('term, 'formula, 'proof) reason -> unit;}type negated= Solver_intf.negated=|Negated|Same_sign
module Make_mcsat = Msat__.Solver.Make_mcsatmodule Make_cdcl_t = Msat__.Solver.Make_cdcl_tmodule Make_pure_sat = Msat__.Solver.Make_pure_sat