Documentation

CslibFrontier.Algorithms.Lean.EdgeCSP.Blossom.Ports

Ordered scope and port accounting for whole-instance contraction #

The actual index projection equals deletion of all internal variables in scope order. The fresh connector is appended once per touched original constraint.

theorem Cslib.Logic.PL.CSP.Blossom.outsideScope_eq_filter (vs scope : List ℕ) :
List.map (fun (j : ℕ) => scope.getD j 0) (Table.outsidePositions scope.length (positions vs scope)) = List.filter (fun (v : ℕ) => !vs.contains v) scope

The outside index projection is precisely the original scope with internal names deleted.

theorem Cslib.Logic.PL.CSP.Blossom.filter_eq_self_of_positions_empty {vs scope : List ℕ} (hp : positions vs scope = []) :
List.filter (fun (v : ℕ) => !vs.contains v) scope = scope

No selected coordinate means that deletion leaves the whole ordered scope unchanged.

A touched original scope is nonempty, even before imposing the two-port blossom condition.

The scope at an old constraint deletes all internal variables and appends its own fresh connector exactly when touched. Outside order and original constraint multiplicity are retained.

Positivity at every retained old constraint is unchanged by actual contraction.

Adding the central nonempty exactly-one scope increases the positive count by exactly one. Nullary original constraints are preserved and are not charged to this measure.

Touching is determined by the gathered ports, not by the number of cycle visits.

Any nonempty incidence sequence touches an actual original constraint.

The actual output variable set consists of surviving old names and the fresh connectors.

Freshness makes the output variable count an exact deletion-plus-connectors formula.

Exact finite accounting when all deleted variables actually occurred in the old instance.

Collecting the new port of each touched constraint gives precisely the central scope.

Occurrence multiplicities are exactly old outside occurrences plus two copies of the connector scope. This permutation does not reorder the constructed CSP itself.

Each output name retains its two old outside occurrences, or is a fresh connector with one old-constraint port and one central port. No enumeration below a binary name is involved.

Actual contraction preserves the edge-instance model at arbitrary finite table arities.