Exact block indexing for positive clause replacements #
The positive compiler numbers auxiliaries by the position of their signed source clause. When signed clauses are themselves emitted in blocks, local drawings use local clause indices. Shifting those indices by the preceding signed block lengths gives exactly the original compiler's formula, including its variable names and clause order.
Main definitions #
PositiveExactOne.shift: translate the signed-clause index of positive auxiliaries.PositiveExactOne.formulaFrom: the positive compiler starting at a supplied clause index.PositiveExactOne.compileBlocks: compile signed blocks with their actual global offsets.
Main results #
PositiveExactOne.formula_flatten: exact global formula as separately compiled blocks.PositiveExactOneCompile.rawFormula_eq_blocks: partition by original source clauses.
References #
These are original indexing identities for the two local compilers.
Shifting preserves the source role of every terminal and shifts each private slot.
A complement block is equivariant under shifting its signed-clause index.
The entire local clause replacement shifts to its actual global clause index.
Starting a compiler at a nonzero index renames just its fresh auxiliaries.
Compiling a concatenation gives the second part its exact signed-clause offset.
The recursive partition is also an indexed concatenation with explicit prefix offsets.
The blockwise compiler is exactly the indexed compiler on the flattened signed input.
Exact formula and fresh-variable names for the block partition at index zero.
The actual positive formula is the concatenation of locally compiled source-clause profiles, with outer auxiliaries shifted by signed-block lengths.
Exact original-clause partition, in source order, with actual global auxiliary names.