Documentation

Std.Tactic.BVDecide.LRAT.Internal.Formula.RatAddResult

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

theorem Std.Tactic.BVDecide.LRAT.Internal.DefaultFormula.insertRatUnits_postcondition {n : Nat} (f : DefaultFormula n) (hf : f.ratUnits = #[] f.assignments.size = n) (units : Sat.CNF.Clause (PosFin n)) :
let assignments := (f.insertRatUnits units).fst.assignments; let_fun hsize := ; let ratUnits := (f.insertRatUnits units).fst.ratUnits; InsertUnitInvariant f.assignments ratUnits assignments hsize
theorem Std.Tactic.BVDecide.LRAT.Internal.DefaultFormula.performRatCheck_fold_formula_eq {n : Nat} (f : DefaultFormula n) (hf : f.ratUnits = #[] f.assignments.size = n) (p : Sat.Literal (PosFin n)) (ratHints : Array (Nat × Array Nat)) :
let performRatCheck_fold_res := Array.foldl (fun (x : DefaultFormula n × Bool) (ratHint : Nat × Array Nat) => if x.snd = true then x.fst.performRatCheck p ratHint else (x.fst, false)) (f, true) ratHints; performRatCheck_fold_res.fst = f
theorem Std.Tactic.BVDecide.LRAT.Internal.DefaultFormula.ratAdd_result {n : Nat} (f : DefaultFormula n) (c : DefaultClause n) (p : Sat.Literal (PosFin n)) (rupHints : Array Nat) (ratHints : Array (Nat × Array Nat)) (f' : DefaultFormula n) (f_readyForRatAdd : f.ReadyForRatAdd) (_pc : p Clause.toList c) (ratAddSuccess : f.performRatAdd c p rupHints ratHints = (f', true)) :
f' = f.insert c