123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778(* This file is free software, part of Zipperposition. See file "license" for more details. *)openLogtktypeproof_step=Proof.Step.ttypeproof=Proof.ttyperesult=|Sat|UnsatofproofexceptionWrongStateofstringmoduletypeS=sigmoduleLit=BBox.LitexceptionUndecidedLittypeclause=Lit.tlistvaladd_clause:proof:proof_step->Lit.tlist->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. *)valadd_clauses:proof:proof_step->Lit.tlistlist->unitvaladd_clause_seq:proof:proof_step->Lit.tlistIter.t->unitvalcheck:full:bool->unit->result(** Is the current problem satisfiable?
@param full if true, check unconditionally *)vallast_result:unit->result(** Last computed result. This does not compute a new result *)valvaluation:Lit.t->bool(** Assuming the last call to {!check} returned {!Sat}, get the boolean
valuation for this (positive) literal in the current model.
@raise WrongState if the last result wasn't {!Sat} *)valvaluation_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
@raise WrongState if the last result wasn't {!Sat} *)valproved_at_0:Lit.t->booloption(** If the literal has been propagated at decision level 0,
return its value (which does not depend on the model).
Otherwise return [None] *)valall_proved:unit->Lit.Set.t(** Set of (signed) proved literals *)valset_printer:Lit.tCCFormat.printer->unit(** How to print literals? *)valget_proof:unit->proof(** Return 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.
@raise WrongState if the last result isn't [Unsat] *)valget_proof_opt:unit->proofoption(** Obtain the proof, if any *)valget_proof_of_lit:Lit.t->proof(** [get_proof_of_lit lit] returns the proof of [lit], assuming it has been
proved true at level 0 (see {!valuation_level})
@raise Invalid_argument if the literal is not at level 0 *)valsetup:unit->unitvalclear:?size:[`Big|`Small|`Tiny]->unit->unit(** Reset the SAT solver state *)end