Make.SAT
exception Unsat of Explanation.t
empty ~selector ()
creates an empty environment.
The optional argument selector
is used to filter ground facts discovered by the instantiation engine.
declare env id
declares a new identifier id
.
If the environment env
isn't unsatisfiable and the model generation is enabled, the solver produces a model term for id
which can be retrieved with get_model
.
val push : t -> int -> unit
push env n
adds n
new assertion levels in env
.
Internally, for each new assertion level, a fresh guard g
is created and all formulas f
assumed at this assertion level is replaced by g ==> f
.
The guard g
is forced to be true
but not propagated at level 0
.
val pop : t -> int -> unit
pop env n
removes n
assertion levels in env
.
Internally, the guard g
introduced in push
corresponding to this pop is propagated to false
at level 0
.
val assume : t -> Expr.gformula -> Explanation.t -> unit
assume env f dep
assumes the ground formula f
in env
. The dep
argument can be used to generate an unsat core.
val assume_th_elt : t -> Expr.th_elt -> Explanation.t -> unit
assume env f exp
assumes a new formula f
with the explanation exp
in the theory environment of env
.
val pred_def : t -> Expr.t -> string -> Explanation.t -> Loc.t -> unit
pred_def env f
assumes a new predicate definition f
in env
.
val optimize : t -> Objective.Function.t -> unit
optimize env fn
registers the objective function fn
.
After optimization, the value of this objective is returned by get_objectives
.
val unsat : t -> Expr.gformula -> Explanation.t
unsat env f
checks the unsatisfiability of f
in env
.
get_model t
produces the current first-order model. Notice that this model is a best-effort.
val get_unknown_reason : t -> Sat_solver_sig.unknown_reason option
get_unknown_reason t
returns the reason Alt-Ergo raised I_dont_know
if it did. If it did not, returns None
.
get_value t e
returns the value of e
as a constant expression in the current model generated. Returns None
if can't decide.
val get_objectives : t -> Objective.Model.t option
get_objectives t
returns the current objective values.