Module 2-A.Solver
module Lit = Libzipperposition.BBox.Littype clause= Lit.t list
val add_clause : proof:Libzipperposition.Sat_solver.proof_step -> Lit.t list -> unitadd_clause ~tag ~proof cadds the constraintcto the SAT solver, annotated withproof.tagis a unique identifier for this constraint and must not have been already used.
val add_clauses : proof:Libzipperposition.Sat_solver.proof_step -> Lit.t list list -> unitval add_clause_seq : proof:Libzipperposition.Sat_solver.proof_step -> Lit.t list Iter.t -> unitval check : full:bool -> unit -> Libzipperposition.Sat_solver.resultIs the current problem satisfiable?
- parameter full
if true, check unconditionally
val last_result : unit -> Libzipperposition.Sat_solver.resultLast computed result. This does not compute a new result
val valuation : Lit.t -> boolAssuming the last call to
checkreturnedSat, 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 * intGives 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 optionIf 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.tSet of (signed) proved literals
val set_printer : Lit.t CCFormat.printer -> unitHow to print literals?
val get_proof : unit -> Libzipperposition.Sat_solver.proofReturn a proof of
false, assumingcheckreturnedUnsat. 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 -> Libzipperposition.Sat_solver.proof optionObtain the proof, if any
val get_proof_of_lit : Lit.t -> Libzipperposition.Sat_solver.proofget_proof_of_lit litreturns the proof oflit, assuming it has been proved true at level 0 (seevaluation_level)- raises Invalid_argument
if the literal is not at level 0