Library containing a SAT solver that can be parametrized by a theory
Library msat
Module type Msat . Solver_intf . PLUGIN_CDCL_T
type t

The plugin state itself

module Formula : FORMULA


type proof
val push_level : t -> unit

Create a new backtrack level

val pop_levels : t -> int -> unit

Pop n levels of the theory

val partial_check : t -> ( void, Formula.t, void, proof ) acts -> unit

Assume the formulas in the slice, possibly using the slice to push new formulas to be propagated or to raising a conflict or to add new lemmas.

val final_check : t -> ( void, Formula.t, void, proof ) acts -> unit

Called at the end of the search in case a model has been found. If no new clause is pushed, then proof search ends and "sat" is returned; if lemmas are added, search is resumed; if a conflict clause is added, search backtracks and then resumes.