Documentation

Std.Tactic.BVDecide.LRAT.Internal.Formula.RatAddSound

This module contains the verification of RAT-based clause adding for the default LRAT checker implementation.

theorem Std.Tactic.BVDecide.LRAT.Internal.DefaultFormula.existsRatHint_of_ratHintsExhaustive {n : Nat} (f : DefaultFormula n) (f_readyForRatAdd : f.ReadyForRatAdd) (pivot : Sat.Literal (PosFin n)) (ratHints : Array (Nat × Array Nat)) (ratHintsExhaustive_eq_true : f.ratHintsExhaustive pivot ratHints = true) (c' : DefaultClause n) (c'_in_f : c' f.toList) (negPivot_in_c' : pivot.negate Clause.toList c') :
theorem Std.Tactic.BVDecide.LRAT.Internal.DefaultFormula.safe_insert_of_performRatCheck_fold_success {n : Nat} (f : DefaultFormula n) (f_readyForRatAdd : f.ReadyForRatAdd) (c : DefaultClause n) (pivot : Sat.Literal (PosFin n)) (rupHints : Array Nat) (ratHints : Array (Nat × Array Nat)) (pivot_in_c : pivot Clause.toList c) (ratHintsExhaustive_eq_true : f.ratHintsExhaustive pivot ratHints = true) (performRatCheck_fold_success : (Array.foldl (fun (x : DefaultFormula n × Bool) (ratHint : Nat × Array Nat) => if x.snd = true then x.fst.performRatCheck pivot.negate ratHint else (x.fst, false)) (((f.insertRupUnits c.negate).fst.performRupCheck rupHints).fst, true) ratHints).snd = true) :
Equisat (PosFin n) f (f.insert c)
theorem Std.Tactic.BVDecide.LRAT.Internal.DefaultFormula.ratAdd_sound {n : Nat} (f : DefaultFormula n) (c : DefaultClause n) (pivot : Sat.Literal (PosFin n)) (rupHints : Array Nat) (ratHints : Array (Nat × Array Nat)) (f' : DefaultFormula n) (f_readyForRatAdd : f.ReadyForRatAdd) (pivot_in_c : pivot Clause.toList c) (ratAddSuccess : f.performRatAdd c pivot rupHints ratHints = (f', true)) :
Equisat (PosFin n) f f'