Module Msat__.Solver_intf
type 'a printer= Format.formatter -> 'a -> unittype ('term, 'form, 'value) sat_state={}The type of values returned when the solver reaches a SAT state.
type ('atom, 'clause, 'proof) unsat_state={}The type of values returned when the solver reaches an UNSAT state.
type 'clause export={hyps : 'clause Msat.Vec.t;history : 'clause Msat.Vec.t;}Export internal state
type negated=|Negatedchanged sign
|Same_signkept sign
This type is used during the normalisation of formulas. See
Expr_intf.S.norm for more details.
type 'term eval_res=The type of evaluation results for a given formula. For instance, let's suppose we want to evaluate the formula
x * y = 0, the following result are correct:Unknownif neitherxnoryare assigned to a valueValued (true, [x])ifxis assigned to0Valued (true, [y])ifyis assigned to0Valued (false, [x; y])ifxandyare assigned to 1 (or any non-zero number)
type ('term, 'formula, 'value) assumption=|Lit of 'formulaThe given formula is asserted true by the solver
|Assign of 'term * 'valueThe term is assigned to the value
Asusmptions made by the core SAT solver.
type ('term, 'formula, 'proof) reason=The type of reasons for propagations of a formula
f.
type lbool=|L_true|L_false|L_undefinedValuation of an atom
type ('term, 'formula, 'value, 'proof) acts={acts_iter_assumptions : (('term, 'formula, 'value) assumption -> unit) -> unit;Traverse the new assumptions on the boolean trail.
acts_eval_lit : 'formula -> lbool;Obtain current value of the given literal
acts_mk_lit : 'formula -> unit;Map the given formula to a literal, which will be decided by the SAT solver.
acts_mk_term : 'term -> unit;Map the given term (and its subterms) to decision variables, for the MCSAT solver to decide.
acts_add_clause : ?keep:bool -> 'formula list -> 'proof -> unit;Add a clause to the solver.
- parameter keep
if true, the clause will be kept by the solver. Otherwise the solver is allowed to GC the clause and propose this partial model again.
acts_raise_conflict : b. 'formula list -> 'proof -> 'b;Raise a conflict, yielding control back to the solver. The list of atoms must be a valid theory lemma that is false in the current trail.
acts_propagate : 'formula -> ('term, 'formula, 'proof) reason -> unit;Propagate a formula, i.e. the theory can evaluate the formula to be true (see the definition of
eval_res}The type for a slice of assertions to assume/propagate in the theory.
type ('a, 'b) gadt_eq=|GADT_EQ : ('a, 'a) gadt_eqtype void= (unit, bool) gadt_eqA provably empty type
module type FORMULA = sig ... endmodule type EXPR = sig ... endFormulas and Terms required for mcSAT
module type PLUGIN_CDCL_T = sig ... endSignature for theories to be given to the CDCL(T) solver
module type PLUGIN_MCSAT = sig ... endSignature for theories to be given to the Model Constructing Solver.
module type PLUGIN_SAT = sig ... endSignature for pure SAT solvers
module type PROOF = sig ... end