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).
- used : ByteArray
For each proof step
icontains at indexi - initialId0ifiis unused,1if it is used. For each proof step
icontains at indexi - initialIdthe step thatimaps to in the new proof or0if that step is not yet set. Used such that the proof remains a sequence without gaps.Maps each clause id to the latest proof step id that references it or -1. Used to determine when a clause can be deleted.
Instances For
Instances For
Instances For
Instances For
Instances For
Instances For
Instances For
Perform a use-def analysis of LRAT proof steps, starting at the empty clause and working its way up with DFS.
Instances For
Instances For
Map the set of used proof steps to a new LRAT proof that has no holes in the sequence of proof
identifiers. Inserts .del actions immediately after a clause's last use.
Instances For
Instances For
Trim the LRAT proof by removing all steps that are not used in reaching the empty clause
conclusion.