Articulo de referencia

Resolution proof compression by splitting

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 Te...

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 π{\displaystyle \pi } and a variable x{\displaystyle x}, it is easy to re-arrange (split) the proof in a proof of x{\displaystyle x} and a proof of ¬x{\displaystyle \neg x} and the recombination of these two proofs (by an additional resolution step) may result in a proof smaller than the original.

Note that applying Splitting in a proof π{\displaystyle \pi } using a variable x{\displaystyle x} does not invalidates a latter application of the algorithm using a differente variable y{\displaystyle y}. Actually, the method proposed by Cotton[1] generates a sequence of proofs π1π2{\displaystyle \pi _{1}\pi _{2}\ldots }, where each proof πi+1{\displaystyle \pi _{i+1}} is the result of applying Splitting to πi{\displaystyle \pi _{i}}. During the construction of the sequence, if a proof πj{\displaystyle \pi _{j}} happens to be too large, πj+1{\displaystyle \pi _{j+1}} is set to be the smallest proof in {π1,π2,,πj}{\displaystyle \{\pi _{1},\pi _{2},\ldots ,\pi _{j}\}}.

For achieving a better compression/time ratio, a heuristic for variable selection is desirable. For this purpose, Cotton[1] defines the "additivity" of a resolution step (with antecedents p{\displaystyle p} and n{\displaystyle n} and resolvent r{\displaystyle r}):

add(r):=max(|r|max(|p|,|n|),0){\displaystyle \operatorname {add} (r):=\max(|r|-\max(|p|,|n|),0)}

Then, for each variable v{\displaystyle v}, a score is calculated summing the additivity of all the resolution steps in π{\displaystyle \pi } with pivot v{\displaystyle v} together with the number of these resolution steps. Denoting each score calculated this way by add(v,π){\displaystyle add(v,\pi )}, each variable is selected with a probability proportional to its score:

p(v)=add(v,πi)xadd(x,πi){\displaystyle p(v)={\frac {\operatorname {add} (v,\pi _{i})}{\sum _{x}{\operatorname {add} (x,\pi _{i})}}}}

To split a proof of unsatisfiability π{\displaystyle \pi } in a proof πx{\displaystyle \pi _{x}} of x{\displaystyle x} and a proof π¬x{\displaystyle \pi _{\neg x}} of ¬x{\displaystyle \neg x}, Cotton [1] proposes the following:

Let l{\displaystyle l} denote a literal and pxn{\displaystyle p\oplus _{x}n} denote the resolvent of clauses p{\displaystyle p} and n{\displaystyle n} where xp{\displaystyle x\in p} and ¬xn{\displaystyle \neg x\in n}. Then, define the map πl{\displaystyle \pi _{l}} on nodes in the resolution dag of π{\displaystyle \pi }:

πl(c):={c,if c is an inputπl(p),if c=pxn and (l=x or xπl(p))πl(n),if c=pxn and (l=¬x or ¬xπl(n))πl(p)xπl(p),if xπl(p) and ¬xπl(n){\displaystyle \pi _{l}(c):={\begin{cases}c,&{\text{if }}c{\text{ is an input}}\\\pi _{l}(p),&{\text{if }}c=p\oplus _{x}n{\text{ and }}(l=x{\text{ or }}x\notin \pi _{l}(p))\\\pi _{l}(n),&{\text{if }}c=p\oplus _{x}n{\text{ and }}(l=\neg x{\mbox{ or }}\neg x\notin \pi _{l}(n))\\\pi _{l}(p)\oplus _{x}\pi _{l}(p),&{\text{if }}x\in \pi _{l}(p){\text{ and }}\neg x\in \pi _{l}(n)\end{cases}}}

Also, let o{\displaystyle o} be the empty clause in π{\displaystyle \pi }. Then, πx{\displaystyle \pi _{x}} and π¬x{\displaystyle \pi _{\neg x}} are obtained by computing πx(o){\displaystyle \pi _{x}(o)} and π¬x(o){\displaystyle \pi _{\neg x}(o)}, respectively.

Notes

  1. 1234Cotton, Scott. "Two Techniques for Minimizing Resolution Proofs". 13th International Conference on Theory and Applications of Satisfiability Testing, 2010.