module type S =sig
..end
module E:Env.S
module Solver:Sat_solver.S
module BLit: BBox.Lit
val split : E.multi_simpl_rule
val check_empty : E.unary_inf_rule
val before_check_sat : unit Signal.t
val after_check_sat : unit Signal.t
val filter_absurd_trails : (Trail.t -> bool) -> unit
filter_trails f
calls f
on every trail associated with the empty
clause. If f
returns false
, the trail is ignored, otherwise
it's negated and sent to the SAT solverval check_satisfiability : E.generate_rule
type
cut_res = private {
|
cut_src : |
(* |
the lemma itself
| *) |
|
cut_pos : |
(* |
clauses true if lemma is true
| *) |
|
cut_neg : |
(* |
clauses true if lemma is false
| *) |
|
cut_lit : |
(* |
lit that is true if lemma is true
| *) |
val pp_cut_res : cut_res CCFormat.printer
val cut_res_clauses : cut_res -> E.C.t Sequence.t
val print_lemmas : unit CCFormat.printer
val introduce_cut : Literals.t list -> ProofStep.t -> cut_res
val on_input_lemma : cut_res Signal.t
val convert_lemma : E.clause_conversion_rule
Avatar_intf.S.on_input_lemma
with the resulting cutval register : unit -> unit