Documentation

QEC1.Lemmas.Lem_2_DecongestionLemmaBound

Lemma 2: Decongestion Lemma Bound (Freedman-Hastings) #

Statement #

For any constant-degree expander graph G with W vertices and degree bound Δ, the number of layers R_G^c needed for cycle-sparsification (Definition 6) with cycle-degree bound c satisfies R_G^c = O(log² W), where the implicit constant depends on Δ and c but not on W.

Proof Strategy #

The proof follows Freedman-Hastings via these reductions:

  1. Edge count and cycle space bounds: For a Δ-bounded graph, |E| ≤ Δ·W/2 and the cycle rank |C| = |E| - |V| + 1 = O(W).

  2. Max edge-cycle degree: The key parameter is M = max_e d_e, the maximum number of generating cycles containing any single edge.

  3. Greedy packing from max edge-cycle degree: Given per-layer bound c and max edge-cycle degree M, we need R ≤ ⌈M/c⌉ layers. This follows from bipartite edge coloring (König's theorem): the layer assignment is equivalent to coloring the cycle-edge incidence bigraph, whose chromatic index equals its max degree M. With c-capacity per color, ⌈M/c⌉ colors suffice. (Proven constructively: given an M-coloring from König's theorem, we pack c consecutive colors per layer.)

  4. Freedman-Hastings bound on M: For constant-degree expanders, using a fundamental cycle basis from a BFS spanning tree:

    • Expander diameter is D = O(log W) (from BFS ball growth + Cheeger inequality)
    • Each fundamental cycle has length ≤ 2D + 1
    • Each edge participates in at most O(D²) = O(log² W) fundamental cycles This gives M = O(log² W), and thus R ≤ ⌈M/c⌉ = O(log² W). (This step requires spanning tree theory, real-valued logarithms, and the Freedman-Hastings counting argument, which are not available in Lean/Mathlib. We parameterize on M and take M ≤ K·log²(W) as a hypothesis.)

Main Results #

Corollaries #

Edge Count Bounds for Constant-Degree Graphs #

For a constant-degree graph with degree bound Δ, we have 2|E| ≤ Δ · |V|.

Edge count bound: |E| ≤ Δ * |V| / 2.

Cycle Space Dimension Bounds #

Cycle count is bounded by edge count when cycle rank property holds.

Cycle count bounded by Δ|V|/2 for constant-degree graphs.

Maximum Edge-Cycle Degree #

noncomputable def DecongestionLemma.maxEdgeCycleDegree {α : Type u_2} [Fintype α] {C : Type u_3} [Fintype C] (cycles : CSet α) [(c : C) → DecidablePred fun (x : α) => x cycles c] :

The maximum edge-cycle degree across all edges.

Equations
Instances For
    theorem DecongestionLemma.le_maxEdgeCycleDegree {α : Type u_2} [Fintype α] {C : Type u_3} [Fintype C] (cycles : CSet α) [(c : C) → DecidablePred fun (x : α) => x cycles c] (e : α) :

    Each edge's cycle degree is bounded by the maximum.

    theorem DecongestionLemma.maxEdgeCycleDegree_le_card {α : Type u_2} [Fintype α] {C : Type u_3} [Fintype C] (cycles : CSet α) [(c : C) → DecidablePred fun (x : α) => x cycles c] :

    Maximum edge-cycle degree is bounded by |C|.

    One-Per-Layer Assignment (Baseline Construction) #

    The simplest layer assignment: each cycle gets its own layer via C ≃ Fin |C|. This gives R = |C| layers with per-layer edge-cycle degree at most 1.

    theorem DecongestionLemma.greedy_layer_assignment_exists {α : Type u_2} [Fintype α] [DecidableEq α] {C : Type u_3} [Fintype C] [DecidableEq C] (cycles : CSet α) [(c : C) → DecidablePred fun (x : α) => x cycles c] (bound : ) (hbound : 0 < bound) :
    ∃ (R : ) (f : CFin (R + 1)), CycleSparsification.LayerCycleDegreeBound cycles f bound R Fintype.card C

    One cycle per layer achieves any positive per-layer bound with R = |C|.

    Greedy Packing from Max Edge-Cycle Degree #

    The key reduction: given an assignment with per-layer bound 1 using M+1 layers (an M-coloring of the cycle-edge incidence from König's theorem), we pack c consecutive original layers into one packed layer. This produces ⌈M/c⌉ packed layers, each with per-layer bound c (since each packed layer is the union of c original layers, each contributing at most 1 cycle per edge).

    The existence of the initial M-coloring follows from König's theorem on bipartite graphs: the cycle-edge incidence bipartite graph has max degree M on the edge side, so its edges can be colored with M colors. König's theorem is not in Mathlib, so we take the M-coloring as a hypothesis (the f₀ parameter).

    For expanders, the Freedman-Hastings lemma shows M = O(log² W), giving the final bound R = O(log² W / c) = O(log² W).

    theorem DecongestionLemma.layer_packing {α : Type u_2} [Fintype α] [DecidableEq α] {C : Type u_3} [Fintype C] [DecidableEq C] (cycles : CSet α) [(c : C) → DecidablePred fun (x : α) => x cycles c] (c : ) (hc : 0 < c) (M : ) (f₀ : CFin (M + 1)) (hf₀ : CycleSparsification.LayerCycleDegreeBound cycles f₀ 1) :
    ∃ (f : CFin (M / c + 1)), CycleSparsification.LayerCycleDegreeBound cycles f c

    Layer packing lemma: Given an assignment with per-layer bound 1 using M+1 layers, packing c consecutive layers into one gives an assignment with per-layer bound c using (M/c)+1 layers.

    theorem DecongestionLemma.greedy_packing_bound {α : Type u_2} [Fintype α] [DecidableEq α] {C : Type u_3} [Fintype C] [DecidableEq C] (cycles : CSet α) [(c : C) → DecidablePred fun (x : α) => x cycles c] (c : ) (hc : 0 < c) (M : ) (f₀ : CFin (M + 1)) (hf₀ : CycleSparsification.LayerCycleDegreeBound cycles f₀ 1) :
    ∃ (R : ) (f : CFin (R + 1)), CycleSparsification.LayerCycleDegreeBound cycles f c R M / c

    Greedy packing bound: Given an initial assignment with per-layer bound 1 using M+1 layers (from König's theorem on bipartite edge coloring), packing c consecutive layers gives R ≤ M/c.

    theorem DecongestionLemma.decongestion_layers_le_card {α : Type u_2} [Fintype α] [DecidableEq α] {C : Type u_3} [Fintype C] [DecidableEq C] (cycles : CSet α) [(c : C) → DecidablePred fun (x : α) => x cycles c] (bound : ) (hbound : 0 < bound) (hexists : ∃ (R : ) (f : CFin (R + 1)), CycleSparsification.LayerCycleDegreeBound cycles f bound) :

    R_G^c ≤ |C| (the minLayers value).

    Coarse Bound: R_G^c ≤ Δ|V|/2 #

    theorem DecongestionLemma.decongestion_coarse_bound {V : Type u_1} [Fintype V] [DecidableEq V] {C : Type u_2} [Fintype C] [DecidableEq C] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] (cycles : CSet G.edgeSet) [(c : C) → DecidablePred fun (x : G.edgeSet) => x cycles c] (Δ : ) ( : DesiderataForGraphG.ConstantDegree G Δ) (bound : ) (hbound : 0 < bound) (hcr : Fintype.card C + Fintype.card V = Fintype.card G.edgeSet + 1) (hV : 0 < Fintype.card V) (hexists : ∃ (R : ) (f : CFin (R + 1)), CycleSparsification.LayerCycleDegreeBound cycles f bound) :
    CycleSparsification.minLayers cycles bound hexists Δ * Fintype.card V / 2

    For constant-degree graphs, R_G^c ≤ Δ · |V| / 2.

    Diameter Bounds #

    For any connected finite graph on ≥ 1 vertex, ediam is finite.

    theorem DecongestionLemma.connected_edist_le {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] (hconn : G.Connected) (u v : V) :
    G.edist u v (Fintype.card V) - 1

    For any connected finite graph, edist u v ≤ |V| - 1.

    For any connected finite graph, diam(G) ≤ |V| - 1.

    theorem DecongestionLemma.connected_dist_le {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] (hconn : G.Connected) (u v : V) :

    Distance bound for connected graphs.

    Expander-Specific: BFS Ball Growth and Logarithmic Diameter #

    noncomputable def DecongestionLemma.bfsBall {V : Type u_1} [Fintype V] (G : SimpleGraph V) [DecidableRel G.Adj] (v : V) (r : ) :

    The BFS ball of radius r around vertex v.

    Equations
    Instances For
      @[simp]
      theorem DecongestionLemma.mem_bfsBall {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] (v u : V) (r : ) :
      u bfsBall G v r G.dist v u r
      theorem DecongestionLemma.bfsBall_mono {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] (v : V) {r s : } (hrs : r s) :
      bfsBall G v r bfsBall G v s
      theorem DecongestionLemma.bfsBall_growth_from_expansion {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] (v : V) (r : ) (hne : (bfsBall G v r).Nonempty) (hsmall : 2 * (bfsBall G v r).card Fintype.card V) (_h_exp : 0 < QEC1.cheegerConstant G) :

      BFS ball growth for expanders: the Cheeger inequality applied to BFS balls. When |B(v,r)| ≤ W/2, the edge boundary satisfies |∂B(v,r)| ≥ h(G) · |B(v,r)|.

      theorem DecongestionLemma.bfsBall_full {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] (hconn : G.Connected) (_hV : 0 < Fintype.card V) (v : V) :

      The BFS ball of radius |V|-1 covers the whole graph for connected G.

      BFS ball growth gives diameter bound + Cheeger inequality.

      For connected expanders with Cheeger constant h₀ > 0 and degree ≤ Δ, each BFS ball B(v,r) with |B(v,r)| ≤ W/2 has geometric growth factor ≥ 1 + h₀/Δ. This gives diam(G) = O(log W / log(1 + h₀/Δ)). The full O(log W) bound requires real-valued logarithms; we prove diam ≤ W - 1 unconditionally and the Cheeger inequality for BFS balls.

      Constructive Decongestion Lemma Bound #

      theorem DecongestionLemma.decongestion_lemma_bound {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] (Δ : ) ( : DesiderataForGraphG.ConstantDegree G Δ) (hV : 2 Fintype.card V) {C : Type u_2} [Fintype C] [DecidableEq C] (cycles : CSet G.edgeSet) [(cyc : C) → DecidablePred fun (x : G.edgeSet) => x cycles cyc] (bound : ) (hbound : 0 < bound) (hcr : Fintype.card C + Fintype.card V = Fintype.card G.edgeSet + 1) :
      ∃ (R : ) (f : CFin (R + 1)), CycleSparsification.LayerCycleDegreeBound cycles f bound R Δ * Fintype.card V / 2

      Decongestion Lemma Bound (constructive coarse version).

      Constructs R = |C| layers using C ≃ Fin |C|, and proves R ≤ Δ · W / 2.

      Universal Linear Bound #

      theorem DecongestionLemma.decongestion_lemma_linear_exists (Δ : ) (_hΔ : 0 < Δ) (c : ) (hc : 0 < c) :
      ∃ (K : ), 0 < K ∀ (V' : Type u_2) [inst : Fintype V'] [DecidableEq V'] (G : SimpleGraph V') [inst_2 : DecidableRel G.Adj] [inst_3 : Fintype G.edgeSet], DesiderataForGraphG.ConstantDegree G ΔG.Connected2 Fintype.card V'∀ (C : Type u_3) [inst_4 : Fintype C] [DecidableEq C] (cycles : CSet G.edgeSet) [inst_6 : (cyc : C) → DecidablePred fun (x : G.edgeSet) => x cycles cyc], Fintype.card C + Fintype.card V' = Fintype.card G.edgeSet + 1∃ (R : ) (f : CFin (R + 1)), CycleSparsification.LayerCycleDegreeBound cycles f c R K * Fintype.card V'

      Decongestion Lemma: Universal Linear Bound.

      For any Δ > 0 and c > 0, there exists K > 0 depending only on Δ such that for any Δ-bounded connected graph G on W ≥ 2 vertices, R_G^c ≤ K · W.

      Main Theorem: Decongestion Lemma (Freedman-Hastings) #

      The O(log² W) bound follows from two ingredients:

      Ingredient 1 (Greedy packing, proven above): Given an assignment with per-layer bound 1 using M+1 layers (an "M-coloring"), pack c consecutive layers into one to get per-layer bound c with M/c+1 layers.

      Ingredient 2 (Freedman-Hastings bound on M for expanders): For a constant-degree expander with degree ≤ Δ and Cheeger constant h₀ > 0:

      Ingredient 2 requires: spanning tree construction, real-valued logarithms for the diameter bound, and the Freedman-Hastings counting argument. These are not available in Lean/Mathlib. The M-coloring in Ingredient 1 requires König's theorem on bipartite edge coloring (also not in Mathlib).

      We encode both hypotheses explicitly:

      theorem DecongestionLemma.decongestion_log_squared {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] ( : ) (_hΔ : DesiderataForGraphG.ConstantDegree G ) (_hconn : G.Connected) (_hV : 2 Fintype.card V) (_h_exp : 0 < QEC1.cheegerConstant G) {C : Type u_2} [Fintype C] [DecidableEq C] (cycles : CSet G.edgeSet) [(cyc : C) → DecidablePred fun (x : G.edgeSet) => x cycles cyc] (c : ) (hc : 0 < c) (_hcr : Fintype.card C + Fintype.card V = Fintype.card G.edgeSet + 1) (M : ) (f₀ : CFin (M + 1)) (hf₀ : CycleSparsification.LayerCycleDegreeBound cycles f₀ 1) (K : ) (hM_bound : M K * Nat.log 2 (Fintype.card V) ^ 2) :
      ∃ (R : ) (f : CFin (R + 1)), CycleSparsification.LayerCycleDegreeBound cycles f c R K * Nat.log 2 (Fintype.card V) ^ 2 / c

      Decongestion Lemma (Freedman-Hastings): Main Theorem.

      For a Δ-bounded connected expander graph G on W ≥ 2 vertices with a cycle collection satisfying the cycle rank property: given an M-coloring of the cycle-edge incidence (from König's theorem) where M ≤ K · log²(W) (from the Freedman-Hastings analysis), the layer count satisfies R ≤ K · log²(W) / c.

      The two hypotheses encode results requiring infrastructure not in Lean/Mathlib:

      • f₀, hf₀: König's theorem on bipartite edge coloring
      • hM_bound: Freedman-Hastings bound on max edge-cycle degree for expanders
      theorem DecongestionLemma.decongestion_log_squared_bound {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] ( : ) (_hΔ : DesiderataForGraphG.ConstantDegree G ) (_hconn : G.Connected) (_hV : 2 Fintype.card V) (_h_exp : 0 < QEC1.cheegerConstant G) {C : Type u_2} [Fintype C] [DecidableEq C] (cycles : CSet G.edgeSet) [(cyc : C) → DecidablePred fun (x : G.edgeSet) => x cycles cyc] (c : ) (hc : 0 < c) (_hcr : Fintype.card C + Fintype.card V = Fintype.card G.edgeSet + 1) (M : ) (f₀ : CFin (M + 1)) (hf₀ : CycleSparsification.LayerCycleDegreeBound cycles f₀ 1) (K : ) (hM_bound : M K * Nat.log 2 (Fintype.card V) ^ 2) :
      ∃ (R : ) (f : CFin (R + 1)), CycleSparsification.LayerCycleDegreeBound cycles f c R K * Nat.log 2 (Fintype.card V) ^ 2

      Decongestion Lemma: O(log² W) Layer Bound (weaker form).

      R ≤ K · log²(W), the O(log² W) bound from the paper's statement.

      Consequences for the Sparsified Graph #

      theorem DecongestionLemma.sparsified_vertex_count_bound (W R K : ) (hR : R K * Nat.log 2 W ^ 2) :
      (R + 1) * W (K * Nat.log 2 W ^ 2 + 1) * W

      With R = O(log² W) layers, the sparsified graph has O(W · log² W) vertices.

      theorem DecongestionLemma.sparsified_edge_overhead_bound (Δ W R K : ) (hR : R K * Nat.log 2 W ^ 2) (_hΔ : 0 < Δ) :
      (R + 1) * (Δ * W / 2) (K * Nat.log 2 W ^ 2 + 1) * (Δ * W / 2)

      With R = O(log² W) layers, the edge overhead is O(W · log² W).

      Summary #

      theorem DecongestionLemma.decongestion_summary {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] (Δ : ) ( : DesiderataForGraphG.ConstantDegree G Δ) (hconn : G.Connected) (hV : 2 Fintype.card V) (h_exp : 0 < QEC1.cheegerConstant G) {C : Type u_2} [Fintype C] [DecidableEq C] (cycles : CSet G.edgeSet) [(cyc : C) → DecidablePred fun (x : G.edgeSet) => x cycles cyc] (bound : ) (hbound : 0 < bound) (hcr : Fintype.card C + Fintype.card V = Fintype.card G.edgeSet + 1) :
      (∃ (R : ) (f : CFin (R + 1)), CycleSparsification.LayerCycleDegreeBound cycles f bound R Δ * Fintype.card V / 2) (∀ (M : ) (f₀ : CFin (M + 1)), CycleSparsification.LayerCycleDegreeBound cycles f₀ 1∃ (R : ) (f : CFin (R + 1)), CycleSparsification.LayerCycleDegreeBound cycles f bound R M / bound) Fintype.card C Δ * Fintype.card V / 2 G.diam Fintype.card V - 1 ∀ (v : V) (r : ), 2 * (bfsBall G v r).card Fintype.card VQEC1.cheegerConstant G * (bfsBall G v r).card (QEC1.SimpleGraph.edgeBoundary G (bfsBall G v r)).card

      Decongestion Lemma Summary.

      Combines all proven results for a constant-degree connected expander:

      1. Layer assignment exists with R ≤ Δ · W / 2 (coarse, from cycle count)
      2. Given M-coloring (König's theorem), packing gives R ≤ M/c
      3. |C| ≤ Δ · W / 2 (cycle count from degree bound)
      4. diam(G) ≤ W - 1 + Cheeger inequality for BFS balls (expander property)
      5. With M ≤ K · log²(W) (Freedman-Hastings), R ≤ K · log²(W) / c