Module Make_cdcl_t.Proof
type atom
= Atom.t
type clause
= Clause.t
type formula
= Formula.t
type lemma
= Plugin.proof
val error_res_f : ('a, Format.formatter, unit, 'b) Pervasives.format4 -> 'a
val clear_var_of_ : atom -> unit
val resolve : clause -> clause -> atom list * atom list
val find_dups : clause -> atom list * atom list
val same_lits : atom Iter.t -> atom Iter.t -> bool
val prove : clause -> clause
val set_atom_proof : atom -> clause
val prove_unsat : clause -> clause
val prove_atom : atom -> clause option
type t
= clause
and proof_node
=
{
conclusion : clause;
step : step;
}
and step
=
|
Hypothesis of lemma
|
Assumption
|
Lemma of lemma
|
Duplicate of t * atom list
|
Hyper_res of hyper_res_step
and hyper_res_step
=
{
hr_init : t;
hr_steps : (atom * t) list;
}
val find_pivots : clause -> clause list -> atom list * (atom * t) list
val expand : clause -> proof_node
val res_of_hyper_res : hyper_res_step -> t * t * atom
val is_leaf : step -> bool
val parents : step -> t list
val expl : step -> string
val unsat_core : clause -> clause list
module Tbl = Clause.Tbl
val spop : 'a Stack.t -> 'a option
val fold_aux : task Stack.t -> bool Tbl.t -> ('a -> proof_node -> 'a) -> 'a -> 'a
val fold : ('a -> proof_node -> 'a) -> 'a -> t -> 'a
val check_empty_conclusion : t -> unit
val check : t -> unit