1. Overview
  2. Docs

Signature for theories to be given to the Model Constructing Solver.

type t

The plugin state itself

include EXPR
type proof

An abstract type for proofs

module Term : sig ... end
module Value : sig ... end
module Formula : FORMULA


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 -> (Term.t, Formula.t, Value.t, 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 -> (Term.t, Formula.t, Value.t, 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.

val assign : t -> Term.t -> Value.t

Returns an assignment value for the given term.

val iter_assignable : t -> (Term.t -> unit) -> Formula.t -> unit

An iterator over the subTerm.ts of a Formula.t that should be assigned a value (usually the poure subTerm.ts)

val eval : t -> Formula.t -> Term.t eval_res

Returns the evaluation of the Formula.t in the current assignment