Def_6: Cycle-Sparsified Graph #
Statement #
Given a graph $G$ and a constant $c$ called the cycle-degree bound, a cycle-sparsification of $G$ is a new graph $\bar{\bar{G}}$ constructed as follows:
Layer structure: Build $R+1$ copies of $G$, labeled as layers $0, 1, 2, \ldots, R$. Layer 0 corresponds to the original graph $G$; layers $1, \ldots, R$ are copies on dummy vertices.
Inter-layer edges: Connect each vertex $v$ in layer $i$ to its copy in layer $i+1$ by an edge, for all $i = 0, \ldots, R-1$.
Cellulation edges: For each cycle in a chosen generating set of cycles for $G$, in exactly one layer, add edges that triangulate (cellulate) the cycle. The triangulation of a cycle $v_1 \to v_2 \to \cdots \to v_N \to v_1$ adds edges: $\{(v_1, v_{N-1}), (v_{N-1}, v_2), (v_2, v_{N-2}), (v_{N-2}, v_3), \ldots\}$ forming a sequence of triangles.
Cycle-degree constraint: The assignment of cycles to layers must ensure that in the resulting graph $\bar{\bar{G}}$, every edge participates in at most $c$ cycles from the chosen generating set.
Let $R_G^c$ denote the minimum number of layers required to achieve cycle-degree at most $c$. The Freedman-Hastings decongestion lemma establishes that $R_G^c = O(\log^2 |V_G|)$ for any constant-degree graph $G$.
Main Definitions #
LayeredVertex: Vertices in the layered graph (layer index × original vertex)CycleSparsification: The cycle-sparsified graph structureCycleLayerAssignment: Assignment of cycles to layerstriangulationEdgePairs: The vertex pairs added to triangulate a cyclecycleDegree: The number of cycles containing an edge in the generating set
Key Properties #
layer_zero_adj_iff_original: Layer 0 is isomorphic to the original graphinterLayerEdge_connects_copies: Each vertex connects to its copy in the next layercycleDegConstraint: Every edge has cycle-degree at most c
Layered Vertex Type #
A vertex in the layered graph: a pair of (layer index, original vertex). Layer 0 contains the original vertices; layers 1, ..., R contain dummy copies.
The layer index (0, 1, ..., R)
- vertex : V
The original vertex that this is a copy of
Instances For
Layers 1, ..., R contain "dummy" vertices
Instances For
Equations
- One or more equations did not get rendered due to their size.
Embed a vertex from the original graph into layer 0
Equations
- LayeredVertex.ofOriginal v = { layer := 0, vertex := v }
Instances For
Embed a vertex into a specific layer
Equations
- LayeredVertex.inLayer i v = { layer := i, vertex := v }
Instances For
Every layered vertex is either original or dummy
The cardinality of layered vertices: (R+1) * |V|
Triangulation of a Cycle #
The triangulation of a cycle [v₁, v₂, ..., vₙ, v₁] adds edges that form triangles using a "zigzag" pattern that alternates between low and high indices: {(v₁, vₙ₋₁), (vₙ₋₁, v₂), (v₂, vₙ₋₂), (vₙ₋₂, v₃), ...}
This creates a sequence of triangles moving inward from both ends of the cycle. We represent cycles as lists of vertices and compute the triangulation edge pairs.
One step of zigzag edge generation. Returns the edge and next state. Given list length n and current state, produces edge (src, dst) based on direction.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Compute the zigzag triangulation edge pairs for a cycle. For a cycle [v₀, v₁, v₂, ..., vₙ₋₁] (0-indexed), we compute edges using the zigzag pattern specified in the paper: {(v₀, vₙ₋₂), (vₙ₋₂, v₁), (v₁, vₙ₋₃), (vₙ₋₃, v₂), ...}
This alternates: connect from low to high end, then high to next low, etc. For a cycle of length n ≥ 4, this produces n - 3 triangulation edges.
Equations
- One or more equations did not get rendered due to their size.
Instances For
For cycles of length < 4, no triangulation edges are needed
Cycle-Layer Assignment #
The set of cycles assigned to a particular layer
Equations
- a.cyclesInLayer layer = {c : C | a.assign c = layer}
Instances For
Every cycle is assigned to exactly one layer
Cycle Degree #
The cycle degree of an edge e in a graph with cycles C is the number of cycles in the generating set that contain edge e.
Equations
- cycleDegree cycles e = {c : C | e ∈ cycles c}.card
Instances For
The maximum cycle degree over all edges
Equations
- maxCycleDegree cycles = Finset.univ.sup fun (e : E) => cycleDegree cycles e
Instances For
Cycle-Sparsified Graph Structure #
A cycle-sparsification of a graph G with cycles. This structure captures the layered construction with inter-layer edges and cellulation (triangulation) edges.
The construction requires:
- A base graph G with a chosen generating set of cycles
- R+1 layers (layer 0 is original, layers 1..R are dummy copies)
- A cycle-degree bound c
- An assignment of each cycle to a layer for triangulation
- The constraint that every edge participates in at most c cycles
- baseGraph : GraphWithCycles V E C
The original graph with its chosen cycles
- numLayers : ℕ
The number of additional layers (total layers = R + 1)
- cycleDegBound : ℕ
The cycle-degree bound c
- cycleAssignment : CycleLayerAssignment C self.numLayers
Assignment of cycles to layers for triangulation
- cycleVertices : C → List V
For each cycle, a list of vertices representing the cycle in order
The cycle-degree constraint is satisfied: every edge participates in at most c cycles
Instances For
The vertex type of the sparsified graph
Equations
Instances For
The number of vertices in the sparsified graph: (R+1) * |V|
Layer 0 of the sparsified graph (the original vertices)
Equations
- S.originalLayer = {lv : S.SparsifiedVertex | lv.layer = 0}
Instances For
Dummy layers 1, ..., R of the sparsified graph
Equations
- S.dummyLayers = {lv : S.SparsifiedVertex | lv.layer ≠ 0}
Instances For
Partition: every vertex is in either the original layer or a dummy layer
The partition is disjoint
Edge Types in the Sparsified Graph #
Edge type 1: Intra-layer edges from the original graph G, copied to each layer. An edge (v, v') in layer i is a copy of edge (v, v') from the original graph.
Equations
Instances For
Edge type 2: Inter-layer edges connecting a vertex to its copy in the next layer. These form "vertical" connections between layers.
Equations
Instances For
The set of triangulation edge pairs for a cycle in a given layer
Equations
- One or more equations did not get rendered due to their size.
Instances For
Edge type 3: Triangulation (cellulation) edges added to triangulate cycles. A pair (lv₁, lv₂) is a triangulation edge if:
- They are in the same layer
- There exists a cycle c assigned to that layer
- (lv₁.vertex, lv₂.vertex) is in the triangulation of c
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adjacency in the sparsified graph: union of all three edge types
Equations
- S.sparsifiedAdj lv₁ lv₂ = (lv₁ ≠ lv₂ ∧ (S.isIntraLayerEdge lv₁ lv₂ ∨ S.isInterLayerEdge lv₁ lv₂ ∨ S.isTriangulationEdge lv₁ lv₂))
Instances For
Intra-layer edges are symmetric
Inter-layer edges are symmetric
Triangulation edges are symmetric
Sparsified adjacency is symmetric
Sparsified adjacency is irreflexive
The Sparsified Graph as a SimpleGraph #
The cycle-sparsified graph as a SimpleGraph
Equations
- S.toSimpleGraph = { Adj := S.sparsifiedAdj, symm := ⋯, loopless := ⋯ }
Instances For
Layer 0 is isomorphic to the original graph G (for intra-layer edges)
Inter-layer Edge Properties #
Each vertex in layer i is connected to its copy in layer i+1
Inter-layer edges only connect consecutive layers
Inter-layer edges connect the same underlying vertex
Triangulation Edge Properties #
Triangulation edges are within the same layer
Triangulation edges come from some cycle assigned to that layer
Layer i vertices form a copy of V
Equations
- S.layerVertices i = {lv : S.SparsifiedVertex | lv.layer = i}
Instances For
Each layer has exactly |V| vertices
The embedding of the original graph into layer 0
Equations
- S.embedOriginal = { toFun := LayeredVertex.ofOriginal, inj' := ⋯ }
Instances For
The embedding preserves adjacency from the original graph
Minimum Number of Layers #
The minimum number of layers R_G^c is the smallest R such that there exists a valid cycle-layer assignment achieving cycle-degree at most c.
Predicate: there exists a valid cycle-layer assignment with R layers such that every edge has cycle-degree at most c.
Equations
- hasValidAssignment G c R = ∃ (_assignment : CycleLayerAssignment C R), ∀ (e : E), cycleDegree G.cycles e ≤ c
Instances For
A valid assignment always exists with R = 0 layers when cycle-degree ≤ c for all edges.
The number of layers needed to achieve cycle-degree at most c. This is the R in R_G^c from the paper.
The value depends on the specific graph and cycle assignment strategy. The Freedman-Hastings decongestion lemma establishes that for constant-degree graphs, R_G^c = O(log² |V|).
- numLayers : ℕ
The number of layers (R) in the construction
- valid : hasValidAssignment G c self.numLayers
A valid cycle-layer assignment exists with this many layers
Instances For
Freedman-Hastings Decongestion Lemma #
The Freedman-Hastings decongestion lemma establishes that for any constant-degree graph G, the minimum number of layers R_G^c = O(log² |V_G|).
This is a deep result requiring probabilistic methods and expander theory. We state it as a class assumption that can be satisfied by specific graphs, rather than proving it here. The proof is beyond the scope of basic type theory and would require significant additional machinery.
Class asserting that a graph satisfies the Freedman-Hastings decongestion bound. This states that there exists a layer bound R satisfying R = O(log² |V|) for the given cycle-degree bound and maximum vertex degree.
This is a hypothesis that must be verified for specific graphs using the Freedman-Hastings decongestion lemma from the literature.
- bound_exists : ∃ (lb : LayerBound G c), lb.numLayers ≤ (Nat.log 2 (Fintype.card V) + 1) ^ 2 * (maxDegree + 1)
A layer bound exists with polylogarithmic number of layers
The cycle-degree bound is positive
The graph has bounded degree
Instances
For graphs satisfying the Freedman-Hastings bound, there exists a valid layer assignment with R_G^c = O(log² n) where n = |V|
Summary #
This formalization captures the cycle-sparsification construction:
Layered Structure: The sparsified graph has R+1 layers:
- Layer 0: The original graph vertices
- Layers 1, ..., R: Dummy vertex copies
Vertex Type:
LayeredVertex V Rrepresents vertices as (layer, original_vertex) pairs. Total vertices: (R+1) · |V_G|Edge Types:
- Intra-layer: Copies of original graph edges within each layer
- Inter-layer: Connect each vertex to its copy in adjacent layers
- Triangulation: Added to cellulate cycles assigned to each layer
Triangulation: For each cycle assigned to a layer, add diagonal edges forming triangles. The
triangulationEdgePairsfunction computes these edges.Cycle-Layer Assignment: Each cycle is assigned to exactly one layer where its triangulation edges are added.
Cycle-Degree Bound: The constraint that every edge participates in at most c cycles from the generating set.
Freedman-Hastings Bound: Stated as a class
HasDecongestionBoundasserting R_G^c = O(log² |V_G|) for constant-degree graphs. This is a hypothesis from the literature that must be verified for specific graphs.
Key properties proven:
- Layer 0 is isomorphic to the original graph (for intra-layer edges)
- Inter-layer edges connect consecutive layers
- Triangulation edges are symmetric and within the same layer
- The vertex partition into original and dummy layers
- Cardinality formulas for vertices in each layer