Module type Sat_solver_intf.S

module type S = sig .. end

module Lit: BBox.Lit
exception UndecidedLit
type clause = Lit.t list 
val add_clause : proof:Sat_solver_intf.proof_step -> Lit.t list -> unit
add_clause ~tag ~proof c adds the constraint c to the SAT solver, annotated with proof. tag is a unique identifier for this constraint and must not have been already used.
val add_clauses : proof:Sat_solver_intf.proof_step -> Lit.t list list -> unit
val add_clause_seq : proof:Sat_solver_intf.proof_step -> Lit.t list Sequence.t -> unit
val check : full:bool -> unit -> Sat_solver_intf.result
Is the current problem satisfiable?
full : if true, check unconditionally
val last_result : unit -> Sat_solver_intf.result
Last computed result. This does not compute a new result
val valuation : Lit.t -> bool
Assuming the last call to Sat_solver_intf.S.check returned Sat, get the boolean valuation for this (positive) literal in the current model.
Raises WrongState if the last result wasn't Sat
val valuation_level : Lit.t -> bool * int
Gives the value of a literal in the model, as well as its decision level. If decision level is 0, the literal has been proved, rather than decided/propagated
Raises WrongState if the last result wasn't Sat
val proved_at_0 : Lit.t -> bool option
If the literal has been propagated at decision level 0, return its value (which does not depend on the model). Otherwise return None
val all_proved : unit -> Lit.Set.t
Set of (signed) proved literals
val set_printer : Lit.t CCFormat.printer -> unit
How to print literals?
val get_proof : unit -> Sat_solver_intf.proof
Return a proof of false, assuming Sat_solver_intf.S.check returned Unsat. The leaves of the proof are input clauses' proofs, the internal nodes are clauses deduced by the SAT solver.
Raises WrongState if the last result isn't Unsat
val get_proof_opt : unit -> Sat_solver_intf.proof option
Obtain the proof, if any
val get_proof_of_lit : Lit.t -> Sat_solver_intf.proof
get_proof_of_lit lit returns the proof of lit, assuming it has been proved true at level 0 (see Sat_solver_intf.S.valuation_level)
Raises Invalid_argument if the literal is not at level 0
val setup : unit -> unit