Whole-instance blossom contraction #
The construction in Section 5.3 of [KKR18], arXiv:1602.03124v6, printed pp. 12–13. Constraints retain their original list positions, with the new exactly-one constraint appended. Each distinct touched original constraint is processed once; all its internal positions are contracted together, even when the cycle visits that constraint repeatedly. Outside positions retain their original order. Fresh binary natural names are obtained by an upper-bound fold followed by addition, without enumerating the interval below that bound.
The input and output are the original CSP Table ℕ. The intermediate rows below are finite
buffers for its positional occurrence labeling, not a second CSP representation.
Selected positions are distinct and in range, independently of variable-name magnitudes.
One index per distinct touched original constraint, in original constraint order.
Instances For
Different original constraint positions receive different fresh binary names.
Instances For
One original constraint is replaced by its simultaneous local contraction. Untouched constraints, including nullary constraints, retain their relation and scope.
Instances For
Executable whole-instance contraction. This keeps every old constraint and appends the central exactly-one constraint, even when some old constraints have empty scopes.
Instances For
Ordered outside projections of actual original labels, with supplied connector bits and one supplied central row. The buffers retain exactly the old constraint ordering.
Instances For
The local reference rows of the contracted instance. The central row is honestly one-hot; zero at all connector occurrences would not satisfy its exactly-one relation.
Instances For
The contracted initial labeling.
Instances For
Fresh connectors cannot coincide with any old occurring variable.
Connectors distinguish constraint positions even for identical original constraints.
Fresh names lie below one addition of the original constraint count to the scanned name bound. The constructor never loops over the interval below this binary bound.
Every local contraction guard follows from the original valid occurrence labeling.
Output arity equals the actual output scope, including for untouched nullary constraints.
The number of stored rows of each old constraint never increases. Duplicate rows retain
multiplicity, as in Table.contract.
A finite row buffer is valid exactly when all its actual local rows are accepted.
Every retained output constraint has its original list index.
The finite reference buffer at a retained original constraint.
The central relation occupies the single newly appended constraint position.
The reference buffer at the central constraint is one-hot, with position zero selected.
Each original local reference row is accepted by its actual output constraint.
Reference rows have exactly the constructor's scope widths.
The constructed initial labeling satisfies all constraints. A nonempty touched set is necessary: exactly-one on zero connectors rejects every row.
No output relation is empty: the explicit reference witnesses it, rather than an assumed model of the original instance.
Local evenness is preserved on the actual ordered output scope.
Every actual output relation is a nonempty even delta-matroid, including the central exactly-one relation with its odd common parity.