Module Make_mcsat.Proof
type atom= Atom.ttype clause= Clause.ttype formula= Formula.ttype lemma= Plugin.proof
val error_res_f : ('a, Format.formatter, unit, 'b) Pervasives.format4 -> 'aval clear_var_of_ : atom -> unitval resolve : clause -> clause -> atom list * atom listval find_dups : clause -> atom list * atom listval same_lits : atom Iter.t -> atom Iter.t -> boolval prove : clause -> clauseval set_atom_proof : atom -> clauseval prove_unsat : clause -> clauseval prove_atom : atom -> clause option
type t= clauseand 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_stepand hyper_res_step={hr_init : t;hr_steps : (atom * t) list;}
val find_pivots : clause -> clause list -> atom list * (atom * t) listval expand : clause -> proof_nodeval res_of_hyper_res : hyper_res_step -> t * t * atomval is_leaf : step -> boolval parents : step -> t listval expl : step -> stringval unsat_core : clause -> clause list
module Tbl = Clause.Tblval spop : 'a Stack.t -> 'a optionval fold_aux : task Stack.t -> bool Tbl.t -> ('a -> proof_node -> 'a) -> 'a -> 'aval fold : ('a -> proof_node -> 'a) -> 'a -> t -> 'aval check_empty_conclusion : t -> unitval check : t -> unit