module type S = Solver_intf.S
The interface of instantiated solvers.
Internal modules
These are the internal modules used, you should probably not use them
if you're not familiar with the internals of mSAT.
module St: Solver_types.S
WARNING: Very dangerous module that expose the internal representation used
by the solver.
module Proof: Res.S
with module St = St
A module to manipulate proofs.
Types
type
atom = St.formula
The type of atoms given by the module argument for formulas
type
res =
Result type for the solver
exception UndecidedLit
Exception raised by the evaluating functions when a literal
has not yet been assigned a value.
Base operations
val assume : ?tag:int -> atom list list -> unit
Add the list of clauses to the current set of assumptions.
Modifies the sat solver state in place.
val solve : ?assumptions:atom list -> unit -> res
Try and solves the current set of assumptions.
val new_lit : St.term -> unit
Add a new litteral (i.e term) to the solver. This term will
be decided on at some point during solving, wether it appears
in clauses or not.
val new_atom : atom -> unit
Add a new atom (i.e propositional formula) to the solver.
This formula will be decided on at some point during solving,
wether it appears in clauses or not.
val unsat_core : Proof.proof -> St.clause list
Returns the unsat core of a given proof.
val true_at_level0 : atom -> bool
true_at_level0 a
returns true
if a
was proved at level0, i.e.
it must hold in all models
val get_tag : St.clause -> int option
Recover tag from a clause, if any
val export_dimacs : Format.formatter -> unit -> unit
Prints the entire set of clauses in the input problem
(including hypothesis, lemmas and local assumptions),
in the dimacs format.
val export_icnf : Format.formatter -> unit -> unit
Export the current problem contents to iCNF format.
This function is meant to be used icnrementally, i.e.
called for each return value of the solve function.