Catalog/Sparsity/ShallowTopologicalMinor/Contract.lean
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