In mathematical logic, proof compression by splitting is an algorithm that operates as a post-process on resolution proofs. It was proposed by Scott Cotton in his paper "Two Techniques for Minimizing Resolution Proof".[1]
The Splitting algorithm is based on the following observation:
Given a proof of unsatisfiability
\pi
x
x
\negx
Note that applying Splitting in a proof
\pi
x
y
\pi1\pi2\ldots
\pii+1
\pii
\pij
\pij+1
\{\pi1,\pi2,\ldots,\pij\}
For achieving a better compression/time ratio, a heuristic for variable selection is desirable. For this purpose, Cotton defines the "additivity" of a resolution step (with antecedents
p
n
r
\operatorname{add}(r):=max(|r|-max(|p|,|n|),0)
Then, for each variable
v
\pi
v
add(v,\pi)
p(v)=
\operatorname{add | |
(v, |
\pii)}{\sumx{\operatorname{add}(x,\pii)}}
To split a proof of unsatisfiability
\pi
\pix
x
\pi\neg
\negx
Let
l
p ⊕ xn
p
n
x\inp
\negx\inn
\pil
\pi
\pil(c):=\begin{cases} c,&ifcisaninput\\ \pil(p),&ifc=p ⊕ xnand(l=xorx\notin\pil(p))\ \pil(n),&ifc=p ⊕ xnand(l=\negxor\negx\notin\pil(n))\\ \pil(p) ⊕ x\pil(p),&ifx\in\pil(p)and\negx\in\pil(n) \end{cases}
Also, let
o
\pi
\pix
\pi\neg
\pix(o)
\pi\neg(o)