Dev.MonadicDependence.CliqueCrossing

DEVVerification

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)

1import Mathlib.Combinatorics.SimpleGraph.Maps
2import Dev.MonadicDependence.Flip.Contract
3import Dev.MonadicDependence.StarCrossing.Contract
4
5namespace Dev.MonadicDependence.CliqueCrossing
6
7open Dev.MonadicDependence.Subdivision
8open Dev.MonadicDependence.Flip
9open Dev.MonadicDependence.StarCrossing
10
11/-- The clique `r`-crossing of order `n` (Mählmann p. 14). Obtained from
12the star `r`-crossing (`starCrossing n r`) by turning each root's
13adjacent 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
20The interior path vertices `π_{i,j,ℓ}` for `2 ≤ ℓ ≤ r − 1` keep the same
21neighborhoods as in the star crossing. `SimpleGraph.fromRel` adds the
22`x ≠ y` guard, so the distinct-edge requirement (`j ≠ j'` for the left
23clique, `i ≠ i'` for the right) is automatic. -/
24def 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
39F Fsymm` for some symmetric relation `F` on the `r + 2` layers. The
40layer partition is shared with the star `r`-crossing
41(`Dev.MonadicDependence.StarCrossing.layer`). -/
42def 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
46end Dev.MonadicDependence.CliqueCrossing
47