Parsimony of the actual paired-port compiler #
For width-three inputs with at most three literal occurrences per variable, every satisfying source assignment has a satisfying output extension. Its values on the occurring output variables are uniquely determined by the source assignment. Conversely, reading the ordinary source cells recovers the source assignment. Counts use only occurring variables on both sides.
Main results #
sourceVariable_mem_rawFormula: every used source representative occurs in the actual output.raw_assignments_agree_iff: source and output agreement coincide for satisfying assignments.exists_satisfying_extension: every satisfying source assignment has an output extension.modelCount_rawFormula,modelCount_formula: the actual compiler preserves model counts.satisfiable_formula_iff: the corresponding satisfiability equivalence.
References #
These are original counting and assignment-correspondence proofs for PairedCompile.
Every used source cell is retained and receives an ordinary ring.
Every used source representative is an occurring variable of the actual raw output.
Source agreement determines every occurring raw output variable. Assignments outside the formula's variable support are unrestricted.
Among satisfying assignments, agreement on raw variables is equivalent to agreement on the occurring source variables read at their fixed source representatives.
Every satisfying source assignment extends to a satisfying raw output assignment with the
same source values. Together with raw_assignments_agree_iff, its occurring values are unique.
The actual raw compiler preserves satisfying-assignment counts under the source width and literal-occurrence restrictions. Both sides count only occurring variables.
Compact natural-number labels preserve the raw compiler's exact model count.
The actual compact compiler preserves satisfiability under the source restrictions.