Sat_solver.Makemodule Lit = BBox.Littype clause = Lit.t listval add_clause : proof:proof_step -> Lit.t list -> unitadd_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:proof_step -> Lit.t list list -> unitval add_clause_seq : proof:proof_step -> Lit.t list Iter.t -> unitval check : full:bool -> unit -> resultIs the current problem satisfiable?
val last_result : unit -> resultLast computed result. This does not compute a new result
val valuation : Lit.t -> boolval 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
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 -> proofReturn a proof of false, assuming check returned Unsat. The leaves of the proof are input clauses' proofs, the internal nodes are clauses deduced by the SAT solver.
val get_proof_opt : unit -> proof optionObtain the proof, if any
get_proof_of_lit lit returns the proof of lit, assuming it has been proved true at level 0 (see valuation_level)