Catalog.Sparsity.ShallowTopologicalMinor
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:
- if \(u, v \in V(H)\) with \(u \neq v\) then \(\psi(v) \neq \psi(u)\),
- if \(e = uv \in E(H)\) then \(\psi(e)\) is a path with endpoints \(u\) and \(v\), and
- 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)
| 1 | import Mathlib.Combinatorics.SimpleGraph.Walk.Basic |
| 2 | import Mathlib.Combinatorics.SimpleGraph.Paths |
| 3 | import Mathlib.Data.Sym.Sym2 |
| 4 | import Catalog.Sparsity.ShallowMinor.Contract |
| 5 | |
| 6 | namespace Catalog.Sparsity.ShallowTopologicalMinor |
| 7 | |
| 8 | open Catalog.Sparsity.ShallowMinor |
| 9 | |
| 10 | /-- A depth-`d` topological minor model of `H` in `G`. |
| 11 | |
| 12 | Each vertex of `H` is mapped injectively to a branch vertex of `G`. Every edge |
| 13 | of `H` is routed by a path between the corresponding branch vertices, of length |
| 14 | at most `2d + 1`. Internal routed vertices avoid all branch vertices, and the |
| 15 | internal vertices of routed paths for distinct edges are disjoint. |
| 16 | (Defs 1.12, 2.15-2.16) -/ |
| 17 | structure 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`. -/ |
| 45 | def 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. -/ |
| 50 | axiom shallowTopologicalMinor_toShallowMinor |
| 51 | {V W : Type} {H : SimpleGraph W} {G : SimpleGraph V} {d : ℕ} : |
| 52 | IsShallowTopologicalMinor H G d → IsShallowMinor H G d |
| 53 | |
| 54 | end Catalog.Sparsity.ShallowTopologicalMinor |
| 55 |