Dev.MonadicDependence.CliqueCrossing
Definition
For \(r \geq 1\) and \(n \in \mathbb{N}\), the clique \(r\)-crossing of order \(n\) is the graph obtained from the star \(r\)-crossing of order \(n\) (Definition StarCrossing) by adding, for every root \(a_i\) (\(i \in [n]\)), all edges turning \(\{\operatorname{start}(\pi_{i,j}) : j \in [n]\} = \{\pi_{i,j,1} : j \in [n]\}\) into a clique, and similarly, for every root \(b_j\) (\(j \in [n]\)), all edges turning \(\{\operatorname{end}(\pi_{i,j}) : i \in [n]\} = \{\pi_{i,j,r} : i \in [n]\}\) into a clique.
Equivalently, the vertex set is the same as for the star \(r\)-crossing and the edges are:
- the \((r+1)\)-edge path \(a_i, \pi_{i,j,1}, \ldots, \pi_{i,j,r}, b_j\) for every \((i, j) \in [n]^2\) (shared with the star \(r\)-crossing);
- for every \(i \in [n]\) and distinct \(j, j' \in [n]\), the edge \(\pi_{i,j,1} \pi_{i,j',1}\);
- for every \(j \in [n]\) and distinct \(i, i' \in [n]\), the edge \(\pi_{i,j,r} \pi_{i',j,r}\).
No other edges are present. In particular, the \((r+1)\)-edge paths are still internally vertex-disjoint across \((i, j)\), and the interior path vertices \(\pi_{i,j,\ell}\) for \(\ell \in [2, r-1]\) have the same neighborhoods as in the star \(r\)-crossing.
Layer partition. The layer partition of the clique \(r\)-crossing of order \(n\) is the same as that of the star \(r\)-crossing (Definition StarCrossing): \(\mathcal{L}_{r,n}^{\mathrm{clique}} := \{L_0, L_1, \ldots, L_{r+1}\}\) with \(L_0 = \{a_i\}\), \(L_\ell = \{\pi_{i,j,\ell} : i, j \in [n]\}\) for \(\ell \in [r]\), \(L_{r+1} = \{b_j\}\).
Flipped clique \(r\)-crossing. For \(r \geq 1\) and \(n \in \mathbb{N}\), a graph \(H\) is a flipped clique \(r\)-crossing of order \(n\) if there exists a symmetric relation \(F \subseteq (\mathcal{L}_{r,n}^{\mathrm{clique}})^2\) such that \(H\) is (isomorphic to) the flip \(\mathrm{Clique}_{r,n} \oplus F\) of the clique \(r\)-crossing \(\mathrm{Clique}_{r,n}\) of order \(n\) via the layer partition \(\mathcal{L}_{r,n}^{\mathrm{clique}}\) (Definition Flip).
The number of flipped clique \(r\)-crossings of order \(n\) (up to isomorphism) is at most \(2^{(r+2)^2}\). Taking \(F = \emptyset\) gives the unflipped clique \(r\)-crossing of order \(n\).
Review notes
Shared vertex type with Definition StarCrossing.
The clique, star, and half-graph \(r\)-crossings of order \(n\) all live on
the same vertex type SubdividedBicliqueVert n r, introduced in
Definition Subdivision. This matches Mählmann’s
convention on p. 14 (same roots and subdivision vertices across the
three crossing patterns; only the edge set differs). Having a single
vertex type is essential for the Lean formulation of
Definition MonadicDependence (each crossing is
flipped through the same layer function).
Reuse of the layer partition.
Contract.lean does not redefine the layer partition — it
reuses Dev.MonadicDependence.StarCrossing.layer, which maps
SubdividedBicliqueVert n r to Fin (r + 2). This
matches the source: Mählmann introduces the layer partition once for
all three crossings (same paragraph, p. 14) and reuses it verbatim in
each definition.
Encoding of the extra clique edges.
The definition joins the star-crossing edge set with two
SimpleGraph.fromRel copies:
- the first adds \(\pi_{i, j, 1} \pi_{i, j', 1}\) edges (same root \(a_i\), both at layer \(1\));
- the second adds \(\pi_{i, j, r} \pi_{i', j, r}\) edges (same root \(b_j\), both at layer \(r\)).
SimpleGraph.fromRel adds the \(x \neq y\) guard automatically,
so the distinct-pair side conditions (\(j \neq j'\) on the left, \(i \neq
i'\) on the right) are implicit.
Imports. Contract.lean imports
Dev.MonadicDependence.StarCrossing.Contract (for
layer and starCrossing) and
Dev.MonadicDependence.Flip.Contract (for flip). The
statement_deps in meta.yaml lists only
StarCrossing; Subdivision and Flip resolve
transitively through StarCrossing, which is necessary to pass
the verifier’s import-level dependency rule.
Flipped variant. IsFlippedCliqueCrossing H n r is
existentially quantified over a symmetric relation
F : Fin (r + 2) → Fin (r + 2) → Prop, exactly the shape used
in Definition MonadicDependence. Mählmann bounds
the number of flipped clique \(r\)-crossings of order \(n\) up to
isomorphism by \(2^{(r+2)^2}\); we do not formalize this bound, since
the downstream use (the ∀ F, Fsymm, ¬ ... shape in
IsMonadicallyDependent) does not need it.
Dev/MonadicDependence/CliqueCrossing/Contract.lean (full)
| 1 | import Mathlib.Combinatorics.SimpleGraph.Maps |
| 2 | import Dev.MonadicDependence.Flip.Contract |
| 3 | import Dev.MonadicDependence.StarCrossing.Contract |
| 4 | |
| 5 | namespace Dev.MonadicDependence.CliqueCrossing |
| 6 | |
| 7 | open Dev.MonadicDependence.Subdivision |
| 8 | open Dev.MonadicDependence.Flip |
| 9 | open Dev.MonadicDependence.StarCrossing |
| 10 | |
| 11 | /-- The clique `r`-crossing of order `n` (Mählmann p. 14). Obtained from |
| 12 | the star `r`-crossing (`starCrossing n r`) by turning each root's |
| 13 | adjacent path-endpoint set into a clique: |
| 14 | |
| 15 | * for every `i : Fin n` and distinct `j, j' : Fin n`, add the edge |
| 16 | `π_{i,j,1} — π_{i,j',1}` (left end, at root `a_i`); |
| 17 | * for every `j : Fin n` and distinct `i, i' : Fin n`, add the edge |
| 18 | `π_{i,j,r} — π_{i',j,r}` (right end, at root `b_j`). |
| 19 | |
| 20 | The interior path vertices `π_{i,j,ℓ}` for `2 ≤ ℓ ≤ r − 1` keep the same |
| 21 | neighborhoods as in the star crossing. `SimpleGraph.fromRel` adds the |
| 22 | `x ≠ y` guard, so the distinct-edge requirement (`j ≠ j'` for the left |
| 23 | clique, `i ≠ i'` for the right) is automatic. -/ |
| 24 | def cliqueCrossing (n r : ℕ) : SimpleGraph (SubdividedBicliqueVert n r) := |
| 25 | starCrossing n r ⊔ |
| 26 | (SimpleGraph.fromRel fun x y => |
| 27 | match x, y with |
| 28 | | .inr ⟨⟨i, _⟩, k⟩, .inr ⟨⟨i', _⟩, k'⟩ => |
| 29 | (i = i' ∧ k.val = 0 ∧ k'.val = 0) |
| 30 | | _, _ => False) ⊔ |
| 31 | (SimpleGraph.fromRel fun x y => |
| 32 | match x, y with |
| 33 | | .inr ⟨⟨_, j⟩, k⟩, .inr ⟨⟨_, j'⟩, k'⟩ => |
| 34 | (j = j' ∧ k.val = r - 1 ∧ k'.val = r - 1) |
| 35 | | _, _ => False) |
| 36 | |
| 37 | /-- A graph `H` is a *flipped clique `r`-crossing of order `n`* |
| 38 | (Mählmann p. 14) iff it is isomorphic to `flip (cliqueCrossing n r) layer |
| 39 | F Fsymm` for some symmetric relation `F` on the `r + 2` layers. The |
| 40 | layer partition is shared with the star `r`-crossing |
| 41 | (`Dev.MonadicDependence.StarCrossing.layer`). -/ |
| 42 | def IsFlippedCliqueCrossing {V : Type*} (H : SimpleGraph V) (n r : ℕ) : Prop := |
| 43 | ∃ (F : Fin (r + 2) → Fin (r + 2) → Prop) (Fsymm : Symmetric F), |
| 44 | Nonempty (H ≃g flip (cliqueCrossing n r) layer F Fsymm) |
| 45 | |
| 46 | end Dev.MonadicDependence.CliqueCrossing |
| 47 |