In proof compression LowerUnits (LU) is an algorithm used to compress propositional logic resolution proofs. The main idea of LowerUnits is to exploit the following fact:[1]
Theorem: Let
\varphi
η
η
\varphi
The algorithm targets exactly the class of global redundancy stemming from multiple resolutions with unit clauses. The algorithm takes its name from the fact that, when this rewriting is done and the resulting proof is displayed as a DAG (directed acyclic graph), the unit node
η
A naive implementation exploiting theorem would require the proof to be traversed and fixed after each unit node is lowered. It is possible, however, to do better by first collecting and removing all the unit nodes in a single traversal, and afterwards fixing the whole proof in a single second traversal. Finally, the collected and fixed unit nodes have to be reinserted at the bottom of the proof.
Care must be taken with cases when a unit node
η\prime
η
η
η\prime
\ell
η\prime
\overline{\ell}
η
η\prime
\overline{\ell}
η
η\prime
η
η\prime
η
\overline{\ell}
η
The algorithm for fixing a proof containing many roots performs a top-down traversal of the proof, recomputing the resolvents and replacing broken nodes (e.g. nodes having deletedNodeMarker as one of their parents) by their surviving parents (e.g. the other parent, in case one parent was deletedNodeMarker).
When unit nodes are collected and removed from a proof of a clause
\kappa
\kappa\prime
\kappa
\kappa\prime
\kappa
General structure of the algorithm
Input: A proof
\psi
\psi\prime
(unitsQueue,
\psib
\psi
\psif
\psib
\psi\prime
\psif
\psi\prime
We collect the unit clauses as follow
Input: A proof
\psi
\psi
\psib
\psib
\psi
\psib
η
\psib
η
η
η
η
\psib
\psib
Then we reinsert the units
Input: A proof
\psif
q
\psi\prime
\psi\prime
\psif
q ≠ \emptyset
η
q
q
q
η
\psi\prime
\psi\prime
η
\psi\prime
\psi\prime