User:Maximo.marcos/sandbox

The ReduceAndReconstruct algorithm is a proof compression method proposed by Simone Rollini, Roberto Bruttomesso and Natasha Sharygina in their paper "An Efficient and Flexible Approach to Resolution Proof Reduction". ReduceAndReconstruct operates as a post-processing on resolution proofs.

ReduceAndReconstruct is based on a set of local proof rewriting rules that transform a subproof into a equivalent or stronger one. Each rule is defined to match a specific context.

A context (as defined by Simone et al ) involves two pivots ($$p$$ and $$q$$) and five clauses ($$\alpha$$, $$\beta$$, $$\gamma$$, $$\delta$$ and $$\eta$$). The structure of a context is shown in ($$). Note that this imply that $$p$$ is contained in $$\beta$$ and $$\gamma$$ (with opposite polarity) and $$q$$ is contained in $$\delta$$ and $$\alpha$$ (also with opposite polarity).

The table below shows the rewriting rules proposed by Simone et al. The idea of the algorithm is to reduce proof size by opportunistically applying these rules.

Note that the first five rules were introduced in a earlier paper. In addition, the following is worth mentioning:


 * Rule A2 does not perform any reduction on its own. However, it is still useful, because of its "shuffling" effect that can create new opportunities for applying the other rules;
 * Rule A1 is not used in practice, because it may increase proof size;
 * Rules B1, B2, B2' and B3 are directly resposible for the reduction, as they produce a transformed root clause stronger than the original one;
 * The application of a B rule may lead to a illegal proof (see the example below), as some literals missing in the transformed root clause may be involved in another resolution step along the path to the proof root. Therefore, the algorithm also has to "reconstruct" a legal proof when this happen.

The following example (extracted from ) shows a situation where the proof becomes illegal after the application of B2' rule:

Applying rule B2' to the highlighted context:

Note that the proof is now illegal because the literal $$o$$ is missing from the transformed root clause. To reconstruct the proof, one can remove $$o$$ together with the last resolution step (that is now redudant). The final result is the following legal (and stronger) proof:

Simone et al shows a further reduction of this proof by applying rule A2 to create a new opportunity to apply rule B2'.

Note that there is usually huge number of contexts where rule A2 may be applied, so an exaustive approach is not feasible in general. Therefore, Simone et al propose to execute ReduceAndReconstruct as a loop with two termination criteria: number of iterations and a timeout (what is reached first). The pseudocode (adapted from ) below shows this.

1 function ReduceAndReconstruct($$\pi$$ /* a proof */, timelimit, maxIterations): 2     for i = 1 to maxIterations do 3         ReduceAndReconstructLoop; 4         if time > timelimit then        // timeout 5             break; 6     end for 7 end function

ReduceAndReconstruct uses the function ReduceAndReconstructLoop, which is specified below. Note that the first part of the algorithm does a topological ordering of the resolution graph (considering that edges goes from antecedentes to resolvents). This is done to ensure that each node is visited after its antecedents (this way, broken resolution steps are always found and fixed).

1 function ReduceAndReconstructLoop($$\pi$$ /* a proof */): 2     TS = TopologicalSorting($$\pi$$); 3     for each node $$n$$ in TS 4         if $$n$$ is not a leaf 5             if $$n_{piv} \in n_{clause}^{left}$$ and $$\overline{n_{piv}} \in n_{clause}^{right}$$ then 6                 $$n_{clause}$$ = Resolution($$n_{clause}^{left}$$, $$n_{clause}^{right}$$); 7                 Determine left context of $$n$$, if any; 8                 Determine right context of $$n$$, if any; 9                 Heuristically choose one context (if any) and apply the corresponding rule; 10             else if $$n_{piv} \notin n_{clause}^{left}$$ and $$\overline{n_{piv}} \in n_{clause}^{right}$$ then 11                 Substitute $$n$$ with $$n^{left}$$; 12             else if $$n_{piv} \in n_{clause}^{left}$$ and $$\overline{n_{piv}} \notin n_{clause}^{right}$$ then 13                 Substitute $$n$$ with $$n^{right}$$; 14             else if $$n_{piv} \notin n_{clause}^{left}$$ and $$\overline{n_{piv}} \notin n_{clause}^{right}$$ then 15                 Heuristically choose an antecedent $$n^{left}$$ or $$n^{right}$$; 16                 Substitute $$n$$ with $$n^{left}$$ or $$n^{right}$$; 17     end for 18 end function

Another point that worth mentioning is that if the input proof is not a tree (in general, resolution graphs are directed acyclic graphs), then the clause $$\delta$$ of a context may be involved in more than one resolution step. In this case, to ensure that a application of a rewriting rule is not going to interfere with other resolution steps, a safe solution is to create a copy of the node represented by clause $$\delta$$. Note that this solution increases proof size and some caution is needed when doing this.

Moreover, the heuristic for rule selection is important to achieve a good compression performance. Simone et al use the following order of preference for the rules (if applicable to the given context): B2 > B3 > { B2', B1 } > A1' > A2 (X > Y means that X is preferred over Y).

Experiments have shown that ReduceAndReconstruct alone has a worse compression/time ratio than the algorithm RecyclePivots. However, while RecyclePivots can be applied only once to a proof, ReduceAndReconstruct may be applied multiple times to produce a better compression. An attempt to combine ReduceAndReconstruct and RecyclePivots algorithms has lead to good results.