Catalog/Sparsity/ShallowMinor/Full.lean
1import Mathlib.Combinatorics.SimpleGraph.Walk.Basic
2import Mathlib.Combinatorics.SimpleGraph.Paths
3
4namespace Catalog.Sparsity.ShallowMinor
5
6/-- A depth-`d` minor model of `H` in `G`.
7
8For each vertex of `H` we choose a branch set in `G` together with a fixed
9center. Every vertex of the branch set is connected to the center by a path of
10length at most `d` that stays inside the branch set; distinct branch sets are
11disjoint; and every edge of `H` is witnessed by an edge of `G` between the
12corresponding branch sets. (Defs 1.10, 2.2-2.4) -/
13structure ShallowMinorModel {V W : Type} (H : SimpleGraph W) (G : SimpleGraph V)
14 (d : ℕ) where
15 branchSet : W → Set V
16 center : W → V
17 center_mem : ∀ v, center v ∈ branchSet v
18 branchDisjoint : ∀ u v, u ≠ v → Disjoint (branchSet u) (branchSet v)
19 branchRadius : ∀ v x, x ∈ branchSet v →
20 ∃ p : G.Walk (center v) x, p.IsPath ∧ p.length ≤ d ∧
21 ∀ w ∈ p.support, w ∈ branchSet v
22 branchEdge : ∀ u v, H.Adj u v →
23 ∃ x ∈ branchSet u, ∃ y ∈ branchSet v, G.Adj x y
24
25/-- `H` is a depth-`d` minor of `G`. -/
26def IsShallowMinor {V W : Type} (H : SimpleGraph W) (G : SimpleGraph V)
27 (d : ℕ) : Prop :=
28 Nonempty (ShallowMinorModel H G d)
29
30end Catalog.Sparsity.ShallowMinor
31