Definition 1: Chain Complex #
A chain complex of vector spaces over 𝔽₂ is a sequence C = (C_•, ∂) consisting of
𝔽₂-vector spaces C_i for i ∈ ℤ equipped with 𝔽₂-linear maps ∂_i : C_i → C_{i-1}
(called differentials) satisfying ∂_{i-1} ∘ ∂_i = 0 for all i.
We define:
- Cycles:
Z_i(C) = ker ∂_i ⊂ C_i - Boundaries:
B_i(C) = im ∂_{i+1} ⊂ C_i - Homology:
H_i(C) = Z_i(C) / B_i(C)
The chain complex type itself is ChainComplex𝔽₂ from Rem_2_NotationConventions.
Here we provide concrete Submodule-level definitions of cycles, boundaries, and homology,
and prove B_i(C) ⊆ Z_i(C).
Main Definitions #
ChainComplex𝔽₂.differential— the differential∂_i : C_i → C_{i-1}as a linear mapChainComplex𝔽₂.cycles— cyclesZ_i(C) = ker ∂_ias a submodule ofC_iChainComplex𝔽₂.boundaries— boundariesB_i(C) = im ∂_{i+1}as a submodule ofC_iChainComplex𝔽₂.boundariesSubCycles—B_i(C)as a submodule ofZ_i(C)ChainComplex𝔽₂.homology'— homologyH_i(C) = Z_i(C) / B_i(C)as a quotient moduleChainComplex𝔽₂.boundaries_le_cycles—B_i(C) ⊆ Z_i(C)
The differential as a linear map #
The differential ∂_i : C_i → C_{i-1} extracted as an 𝔽₂-linear map.
We use C.d i (i - 1) which is the Mathlib differential for ComplexShape.down ℤ.
Equations
- C.differential i = ModuleCat.Hom.hom (C.d i (i - 1))
Instances For
The incoming differential ∂_{i+1} : C_{i+1} → C_i, extracted as a linear map.
This uses C.d (i + 1) i, which avoids issues with (i + 1) - 1 vs i.
Equations
- C.incomingDifferential i = ModuleCat.Hom.hom (C.d (i + 1) i)
Instances For
Cycles #
The cycles Z_i(C) = ker ∂_i, i.e., the kernel of the differential ∂_i : C_i → C_{i-1},
as a submodule of C_i.
Equations
- C.cycles i = (C.differential i).ker
Instances For
Boundaries #
The boundaries B_i(C) = im ∂_{i+1}, i.e., the image of ∂_{i+1} : C_{i+1} → C_i,
as a submodule of C_i.
Equations
- C.boundaries i = (C.incomingDifferential i).range
Instances For
Boundaries ⊆ Cycles #
The chain complex condition ∂_i ∘ ∂_{i+1} = 0 as a composition of linear maps.
B_i(C) ⊆ Z_i(C): every boundary is a cycle, since ∂_i ∘ ∂_{i+1} = 0.
Boundaries as a submodule of cycles, and homology #
B_i(C) viewed as a submodule of Z_i(C), using the inclusion B_i ⊆ Z_i.
This is the preimage of B_i(C) under the subtype embedding Z_i(C) ↪ C_i.
Equations
- C.boundariesSubCycles i = Submodule.comap (C.cycles i).subtype (C.boundaries i)
Instances For
The i-th homology H_i(C) = Z_i(C) / B_i(C). Since B_i(C) ⊆ Z_i(C), the boundaries
form a submodule of the cycles, and the homology is the quotient module.
Equations
- C.homology' i = (↥(C.cycles i) ⧸ C.boundariesSubCycles i)