Catalog.Sparsity.ShallowTopologicalMinor

Verification

Definition

A graph \(H\) is a topological minor of \(G\), written \(H \preccurlyeq^{\mathrm{top}} G\), if there is a topological minor model \(\psi\) of \(H\) in \(G\): a map \(\psi\) which assigns to every vertex \(v \in V(H)\) a vertex \(\psi(v) \in V(G)\) and to every edge \(e \in E(H)\) a path \(\psi(e)\) in \(G\) such that:

  1. if \(u, v \in V(H)\) with \(u \neq v\) then \(\psi(v) \neq \psi(u)\),
  2. if \(e = uv \in E(H)\) then \(\psi(e)\) is a path with endpoints \(u\) and \(v\), and
  3. if \(e, e' \in E(H)\) with \(e \neq e'\), then \(\psi(e)\) and \(\psi(e')\) are internally vertex disjoint.

The vertex \(\psi(v)\) is the pin of \(v\).

A graph \(H\) is a topological depth-\(d\) minor of \(G\), written \(H \preccurlyeq^{\mathrm{top}}_d G\), if there is a topological minor model \(\psi\) of \(H\) in \(G\) such that the paths \(\psi(e)\) have length at most \(2d + 1\) for all \(e \in E(H)\).

Every topological depth-\(d\) minor is a depth-\(d\) minor (Definition ShallowMinor).

For a graph \(G\) and \(d \in \mathbb{N}\): \[\widetilde{\nabla}_d(G) := \sup \left\{ \frac{|E(H)|}{|V(H)|} : H \preccurlyeq^{\mathrm{top}}_d G \right\}, \qquad \widetilde{\omega}_d(G) := \sup \left\{ t : K_t \preccurlyeq^{\mathrm{top}}_d G \right\}.\] For a graph class \(\mathcal{C}\) and \(d \in \mathbb{N}\): \[\widetilde{\nabla}_d(\mathcal{C}) := \sup_{G \in \mathcal{C}} \widetilde{\nabla}_d(G), \qquad \widetilde{\omega}_d(\mathcal{C}) := \sup_{G \in \mathcal{C}} \widetilde{\omega}_d(G).\]

Review notes

The Lean contract encodes depth-\(d\) topological minors as a structure type faithful to the source definition.

ShallowTopologicalMinorModel. The branch-vertex map is an injection \(W \hookrightarrow V\). Each edge of \(H\) is routed via a path in \(G\) of length at most \(2d + 1\). The edgeTail field chooses an arbitrary endpoint of each source edge to orient the routed path; the other endpoint is recovered via Sym2.Mem.other. Internal vertices of distinct routed paths must be disjoint and must avoid all branch vertices.

Exposed derived theorem. The contract also exports shallowTopologicalMinor_toShallowMinor, asserting that every depth-\(d\) shallow topological minor yields a depth-\(d\) shallow minor (Definition ShallowMinor). This is a direct consequence of the two structure definitions, but exposing it in the reviewed API avoids duplicating the same conversion argument in downstream entries such as Catalog.Sparsity.NDImpliesUQW.

Omissions. The source also defines \(\widetilde{\nabla}_d(G)\) and \(\widetilde{\omega}_d(G)\) as numeric suprema. These are not formalized here because the downstream definitions only need the predicate “\(H\) is a depth-\(d\) topological minor”, directly expressed as IsShallowTopologicalMinor. This avoids the need for rational- or real-valued supremum infrastructure.

Catalog/Sparsity/ShallowTopologicalMinor/Contract.lean (full)

1import Mathlib.Combinatorics.SimpleGraph.Walk.Basic
2import Mathlib.Combinatorics.SimpleGraph.Paths
3import Mathlib.Data.Sym.Sym2
4import Catalog.Sparsity.ShallowMinor.Contract
5
6namespace Catalog.Sparsity.ShallowTopologicalMinor
7
8open Catalog.Sparsity.ShallowMinor
9
10/-- A depth-`d` topological minor model of `H` in `G`.
11
12Each vertex of `H` is mapped injectively to a branch vertex of `G`. Every edge
13of `H` is routed by a path between the corresponding branch vertices, of length
14at most `2d + 1`. Internal routed vertices avoid all branch vertices, and the
15internal vertices of routed paths for distinct edges are disjoint.
16(Defs 1.12, 2.15-2.16) -/
17structure ShallowTopologicalMinorModel {V W : Type}
18 (H : SimpleGraph W) (G : SimpleGraph V) (d : ℕ) where
19 branchVertex : W ↪ V
20 edgeTail : H.edgeSet → W
21 edgeTail_mem : ∀ e : H.edgeSet, edgeTail e ∈ (e : Sym2 W)
22 edgePath : ∀ e : H.edgeSet,
23 G.Walk (branchVertex (edgeTail e))
24 (branchVertex (Sym2.Mem.other (edgeTail_mem e)))
25 edgePath_isPath : ∀ e, (edgePath e).IsPath
26 edgePath_length : ∀ e, (edgePath e).length ≤ 2 * d + 1
27 edgePath_interior_avoids_branch :
28 ∀ e {x : V},
29 x ∈ (edgePath e).support →
30 x ≠ branchVertex (edgeTail e) →
31 x ≠ branchVertex (Sym2.Mem.other (edgeTail_mem e)) →
32 ∀ w : W, x ≠ branchVertex w
33 edgePath_interior_disjoint :
34 ∀ e e' {x : V},
35 e ≠ e' →
36 x ∈ (edgePath e).support →
37 x ∈ (edgePath e').support →
38 x ≠ branchVertex (edgeTail e) →
39 x ≠ branchVertex (Sym2.Mem.other (edgeTail_mem e)) →
40 x ≠ branchVertex (edgeTail e') →
41 x ≠ branchVertex (Sym2.Mem.other (edgeTail_mem e')) →
42 False
43
44/-- `H` is a depth-`d` topological minor of `G`. -/
45def IsShallowTopologicalMinor {V W : Type}
46 (H : SimpleGraph W) (G : SimpleGraph V) (d : ℕ) : Prop :=
47 Nonempty (ShallowTopologicalMinorModel H G d)
48
49/-- Every depth-`d` shallow topological minor is a depth-`d` shallow minor. -/
50axiom shallowTopologicalMinor_toShallowMinor
51 {V W : Type} {H : SimpleGraph W} {G : SimpleGraph V} {d : ℕ} :
52 IsShallowTopologicalMinor H G d → IsShallowMinor H G d
53
54end Catalog.Sparsity.ShallowTopologicalMinor
55

Dependencies