Rem_7: Exactness of Boundary and Coboundary Maps #
Statement #
When a generating set of cycles for graph G is chosen, the maps ∂₂ (boundary from cycles to edges) and ∂ (boundary from edges to vertices) form an exact sequence in the sense that im(∂₂) = ker(∂). That is, the image of ∂₂ equals the kernel of ∂: an edge-set is the boundary of some cycle-set if and only if it has zero boundary (i.e., every vertex has even degree in the edge-set).
Similarly, the coboundary maps δ and δ₂ form an exact sequence: ker(δ₂) = im(δ).
Note that δ has a nontrivial kernel: ker(δ) = {𝟬, 𝟙} where 𝟙 is the all-ones vector (corresponding to the full vertex set), since every edge has exactly two endpoints.
Main Results #
boundary_comp_boundary2_eq_zero: ∂ ∘ ∂₂ = 0 (chain complex property)coboundary2_comp_coboundary_eq_zero: δ₂ ∘ δ = 0 (cochain complex property)allOnes_in_ker_coboundary: 𝟙 ∈ ker(δ) - follows from "every edge has two endpoints"zero_in_ker_coboundary: 0 ∈ ker(δ)ker_coboundary_nontrivial: ker(δ) contains both 0 and 𝟙 (nontrivial)ker_coboundary_classification: ker(δ) = {0, 𝟙} for connected graphsim_coboundary_subset_ker_coboundary2: im(δ) ⊆ ker(δ₂) (cochain complex property)exactness_coboundary_iff: Exactness for coboundary (under cut generation assumption)exactness_boundary_iff: Exactness for boundary (under cycle generation assumption)boundary_zero_iff_even_degree: Zero boundary ↔ even degree at all vertices
File Structure #
- Definitions and Basic Properties
- All-Ones Vector and Nontrivial Kernel (key: "every edge has exactly two endpoints")
- Chain Complex Property: ∂ ∘ ∂₂ = 0
- Cochain Complex Property: δ₂ ∘ δ = 0
- Zero Boundary Characterization
- Connected Graph Kernel Classification
- Exactness Properties
Section 1: Definitions and Basic Properties #
A cycle property: a set of edges is a valid cycle if every vertex has even degree in it. This is the defining property that makes ∂(cycle) = 0.
Equations
- G.IsValidCycleEdgeSet edgeSet = ∀ (v : V), {e ∈ edgeSet | G.isIncident e v}.card % 2 = 0
Instances For
Extended graph with valid cycles.
- graph : SimpleGraph V
- decAdj : DecidableRel self.graph.Adj
- edgeEndpoints : E → V × V
- cycles_valid (c : C) : self.IsValidCycleEdgeSet (self.cycles c)
Instances For
The all-ones vector: 1 at every vertex
Equations
Instances For
The degree of vertex v in an edge-vector f: counts edges incident to v (mod 2).
Equations
- G.vertexDegreeMod2 f v = ∑ e ∈ G.incidentEdges v, f e
Instances For
Two vertices are adjacent if they share an edge.
Equations
- G.AreAdjacent v w = ∃ (e : E), (G.edgeEndpoints e).1 = v ∧ (G.edgeEndpoints e).2 = w ∨ (G.edgeEndpoints e).1 = w ∧ (G.edgeEndpoints e).2 = v
Instances For
The graph is connected if any two vertices can be connected by a path.
Equations
- G.IsConnected = ∀ (v w : V), Relation.ReflTransGen G.AreAdjacent v w
Instances For
Section 2: All-Ones Vector and Nontrivial Kernel #
The coboundary map δ has a nontrivial kernel: ker(δ) = {0, 𝟙} where 𝟙 is the all-ones vector. This is because every edge has exactly two endpoints, so δ(𝟙)(e) = 1 + 1 = 0.
Every edge has exactly two endpoints, which in ZMod 2 means 1 + 1 = 0.
The all-ones vector is in ker(δ): δ(𝟙) = 0. This is because every edge has exactly two endpoints.
The zero vector is trivially in ker(δ).
The kernel of δ is nontrivial: it contains both 0 and 𝟙. This formalizes the remark that "δ has a nontrivial kernel". Note: This holds for ANY graph - no connectedness required! The key insight is that every edge has exactly two endpoints, so 1 + 1 = 0 in ZMod 2.
The inclusion {0, 𝟙} ⊆ ker(δ) holds for ANY graph. The original statement "ker(δ) = {0, 1} since every edge has exactly two endpoints" asserts this inclusion - the "two endpoints" argument shows 𝟙 ∈ ker(δ). For connected graphs, this is an equality; for disconnected graphs, ker(δ) may be larger.
The all-ones vector is nonzero if there is at least one vertex.
For a nonempty graph, ker(δ) contains a nonzero element.
Section 3: Coboundary Characterization #
The coboundary δ(α)(e) = α(v) + α(v') for e = {v, v'}. This is zero iff both endpoints have the same value.
Coboundary at an edge: δ(f)(e) = f(v) + f(v') where e = {v, v'}.
Coboundary is zero at edge iff both endpoints have same value.
For the all-ones vector, coboundary is zero at every edge.
Section 4: Chain Complex Property #
The key chain complex property: ∂ ∘ ∂₂ = 0. This means im(∂₂) ⊆ ker(∂): the boundary of any cycle-chain is zero.
If a set of edges forms a valid cycle, then its boundary is zero.
The chain complex property: ∂ ∘ ∂₂ = 0. This is equivalent to im(∂₂) ⊆ ker(∂).
The image of ∂₂ is contained in the kernel of ∂.
Section 5: Cochain Complex Property #
The cochain complex property: δ₂ ∘ δ = 0. This means im(δ) ⊆ ker(δ₂).
For a valid cycle, the sum over edges in the cycle of (endpoints match v) has even parity. This is because every valid cycle visits each internal vertex an even number of times.
The cochain complex property: δ₂ ∘ δ = 0. This is equivalent to im(δ) ⊆ ker(δ₂).
The image of δ is contained in the kernel of δ₂.
Section 6: Zero Boundary Characterization #
An edge-set has zero boundary iff every vertex has even degree in the edge-set.
Boundary at vertex equals vertex degree (mod 2).
Zero boundary is equivalent to all vertex degrees being zero (mod 2).
Zero boundary ↔ every vertex has even degree in the edge-set. This is the characterization mentioned in the remark.
Section 7: Connected Graph Kernel Classification #
For a connected graph, ker(δ) = {0, 𝟙}. Connectedness means any two vertices can be joined by a path of edges.
If f ∈ ker(δ) and v, w are adjacent, then f(v) = f(w).
For a connected graph, if f ∈ ker(δ), then f is constant on all vertices.
For a connected graph, ker(δ) = {0, 𝟙}. Every element of ker(δ) is either 0 or the all-ones vector.
Connected graph version: ker(δ) has exactly two elements {0, 𝟙}.
Classification as an iff statement for connected graphs.
Section 8: Exactness Properties #
Exactness at C₁ means im(∂₂) = ker(∂):
- One direction (im(∂₂) ⊆ ker(∂)) follows from ∂ ∘ ∂₂ = 0 for valid cycles
- The other direction requires that the cycles generate all cycles
The cycles generate all cycles if every edge-chain with zero boundary can be written as a sum of cycle boundaries.
Equations
- G.CyclesGenerate = ∀ (f : GraphWithCycles.VectorE' E), G.boundaryMap f = 0 → ∃ (g : GraphWithCycles.VectorC' C), G.boundary2Map g = f
Instances For
Exactness at C₁: an edge-chain is in im(∂₂) iff it has zero boundary. This requires that the cycles generate all cycles AND cycles are valid.
The cuts generate all cocycles if every edge-chain in ker(δ₂) is in im(δ). This is the dual of CyclesGenerate.
Equations
- G.CutsGenerate = ∀ (f : GraphWithCycles.VectorE' E), G.coboundary2Map f = 0 → ∃ (g : GraphWithCycles.VectorV' V), G.coboundaryMap g = f
Instances For
Exactness for coboundary maps: an edge-chain is in im(δ) iff it's in ker(δ₂). This requires valid cycles (for im(δ) ⊆ ker(δ₂)) and cut generation (for the converse).
Section 9: Summary and Simp Lemmas #
The remark's key assertion: ker(δ) = {0, 𝟙} for connected graphs.