This module implements the LRAT trimming algorithm described in section 4 of "Faster LRAT Checking Than Solving with CaDiCaL" (https://drops.dagstuhl.de/storage/00lipics/lipics-vol271-sat2023/LIPIcs.SAT.2023.21/LIPIcs.SAT.2023.21.pdf).
The context used for trimming LRAT proofs.
@[reducible, inline]
partial def
Lean.Elab.Tactic.BVDecide.LRAT.trim.M.findInitialId
(proof : Array Std.Tactic.BVDecide.LRAT.IntAction)
(curr : Nat := 0)
:
def
Lean.Elab.Tactic.BVDecide.LRAT.trim.M.findEmptyId
(proof : Array Std.Tactic.BVDecide.LRAT.IntAction)
:
Equations
- One or more equations did not get rendered due to their size.
def
Lean.Elab.Tactic.BVDecide.LRAT.trim.M.run
{α : Type}
(proof : Array Std.Tactic.BVDecide.LRAT.IntAction)
(x : M α)
:
Equations
- One or more equations did not get rendered due to their size.
@[inline]
Equations
- Lean.Elab.Tactic.BVDecide.LRAT.trim.M.getInitialId = do let ctx ← read pure ctx.initialId
@[inline]
Equations
- Lean.Elab.Tactic.BVDecide.LRAT.trim.M.getEmptyId = do let ctx ← read pure ctx.addEmptyId
@[inline]
@[inline]
Equations
- Lean.Elab.Tactic.BVDecide.LRAT.trim.M.isUsed id = do let s ← get let __do_lift ← Lean.Elab.Tactic.BVDecide.LRAT.trim.M.idIndex✝ id pure (s.used[__do_lift]! == 1)
@[inline]
Equations
- One or more equations did not get rendered due to their size.
@[inline]
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
@[inline]
Equations
- One or more equations did not get rendered due to their size.
Perform a use-def analysis of LRAT proof steps, starting at the empty clause and working its way up with DFS.
Map the set of used proof steps to a new LRAT proof that has no holes in the sequence of proof identifiers.
Equations
- One or more equations did not get rendered due to their size.
Trim the LRAT proof
by removing all steps that are not used in reaching the empty clause
conclusion.