module Theory_intf:sig
..end
This module defines what a theory must implement in order to
be used in an SMT solver.
type('formula, 'proof)
res =('formula, 'proof) Plugin_intf.res
=
| |
Sat |
(* |
The current set of assumptions is satisfiable.
| *) |
| |
Unsat of |
(* |
The current set of assumptions is *NOT* satisfiable, and here is a
theory tautology (with its proof), for which every litteral is false
under the current assumptions.
| *) |
type ('form, 'proof)
slice = {
|
start : |
(* |
Start of the slice
| *) |
|
length : |
(* |
Length of the slice
| *) |
|
get : |
(* |
Accesor for the formuals in the slice.
Should only be called on integers
i s.t.
start <= i < start + length | *) |
|
push : |
(* |
Allows to add to the solver a clause.
| *) |
|
propagate : |
(* | propagate lit causes proof informs the solver to propagate lit , with the reason
that the clause causes => lit is a theory tautology. It is faster than pushing
the associated clause but the clause will not be remembered by the sat solver,
i.e it will not be used by the solver to do boolean propagation. | *) |
module type S =sig
..end