Explicit Boolean relation tables #
CSP.Table is a relation alphabet for the existing CSP, not a second instance format.
Rows are lists, including duplicates; the arity and width guard distinguish the empty nullary
relation from the nullary relation containing the empty row. Malformed tables reject all rows.
The local update Table.contract implements [KKR18], arXiv v6,
Section 5.3, printed pp. 12–13: positions are the distinct internal variables in a constraint,
reference is its current feasible local row, and the last output bit is the fresh connector.
Outside coordinates retain their original order. Zero internal deviations give connector false,
one gives true, and more than one discard the row. This module does not prove delta-matroid
preservation, blossom validity, or the correctness of the edge solver. The elementary list
implementation and its proofs are original formalization details.
Table.exactlyOne constructs the new connector relation from the length of a supplied scope.
It stores one row per connector, rather than treating all possible active relations as a fixed
finite alphabet. Its semantics agrees with Example 17 and the new constraint in Section 5.3
of the cited paper. In particular, its zero-connector relation is empty.
Main definitions #
Cslib.Logic.PL.CSP.Table: arity and explicit rows.Cslib.Logic.PL.CSP.Table.contract: guarded local contraction table update.Cslib.Logic.PL.CSP.Table.exactlyOne: explicit exactly-one connector table.
Instances For
Every stored row has the declared width. Empty tables are well formed at every arity.
Instances For
Outside positions are a sublist of the original coordinate order.
Selecting outside positions never increases width, even for malformed selections.
Distinct in-range positions and the outside positions partition the original width.
Invalid tables, references or position lists have a total rejecting output.
A guarded contraction has exactly the outside width plus one connector coordinate.
The actual blossom hypothesis of at least two internal coordinates strictly decreases local width. Feasibility alone is insufficient for this conclusion.
Exact contraction membership, with the output connector computed from zero or one internal changes. The original row is retained as a witness for later lifting.
The paper's two cases, stated without a numeric-to-Boolean connector conversion.
The feasible reference has no internal deviations.
A guarded contraction retains the current feasible row, with its connector set to zero.
Explicit exactly-one table. The scope's length supplies the output-size resource; its entries need not be distinct, since this constructs only a relation, not a CSP scope guard.
Instances For
Exactly-one stores one row per connector.
Exactly-one tables have the declared width.