Explicit parity chains #
The chain replaces an EVEN constraint by tables of width at most three. It has k - 2
constraints and k - 3 fresh variables when k ≥ 4; smaller scopes retain one table.
Fresh names begin at the supplied offset. Construction traverses the actual scope, never
an unchecked binary arity. The chain is an original implementation detail for the difference
reduction of [DK15], Section 3, Lemma 5, Corollary 4 and Theorem 2,
printed pp. 439–440. No geometric realization of the expansion is asserted or needed.
Main definitions #
Cslib.Logic.PL.CSP.Table.evenTable: explicit even-parity rows.Cslib.Logic.PL.CSP.Table.parityChain: the actual width-three expansion.
Explicit even-parity table. Only widths zero through three are generated at runtime by
parityChain; larger tables are a mathematical API, with no uniform polynomial claim.
Instances For
Every row has exactly the declared width, including the nullary row.
All parity tables used by a chain are nonempty even delta-matroids.
Exactly the requested number of chain constraints.
Linear constraint count, including empty and short boundaries.
The actual expansion uses only nonempty even delta-matroid relations.
Every satisfying chain assignment has even boundary parity. This direction needs no freshness or distinctness assumption, so repeated boundary names cause no semantic shortcut.
Extend any even boundary assignment using only the consecutive allocated auxiliary block. Names outside that block are preserved, including arbitrary large binary names.
Exactly two occurrences of each allocated auxiliary, and the original multiplicity of all boundary names. This equality does not assume that the caller chose fresh names.
Every old boundary occurrence is retained once, and every new auxiliary occurs twice.
No scope repeats a name when the original boundary is distinct and auxiliaries are fresh.
Fresh parity expansion satisfies the target's no-repeat-within-one-scope convention.