The homology of a complex #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Given C : homological_complex V c
, we have C.cycles i
and C.boundaries i
,
both defined as subobjects of C.X i
.
We show these are functorial with respect to chain maps,
as C.cycles_map f i
and C.boundaries_map f i
.
As a consequence we construct homology_functor i : homological_complex V c ⥤ V
,
computing the i
-th homology.
The cycles at index i
, as a subobject.
The underlying object of C.cycles i
is isomorphic to kernel (C.d i j)
,
for any j
such that rel i j
.
Equations
- C.cycles_iso_kernel r = (C.cycles i).iso_of_eq (category_theory.limits.kernel_subobject (C.d i j)) _ ≪≫ category_theory.limits.kernel_subobject_iso (C.d i j)
The boundaries at index i
, as a subobject.
The underlying object of C.boundaries j
is isomorphic to image (C.d i j)
,
for any i
such that rel i j
.
Equations
- C.boundaries_iso_image r = (C.boundaries j).iso_of_eq (category_theory.limits.image_subobject (C.d i j)) _ ≪≫ category_theory.limits.image_subobject_iso (C.d i j)
The canonical map from boundaries i
to cycles i
.
Prefer boundaries_to_cycles
.
The homology of a complex at index i
.
The j
th homology of a homological complex (as kernel of 'the differential from Cⱼ
' modulo
the image of 'the differential to Cⱼ
') is isomorphic to the kernel of d : Cⱼ → Cₖ
modulo
the image of d : Cᵢ → Cⱼ
when rel i j
and rel j k
.
Equations
- C.homology_iso hij hjk = homology.map_iso _ _ (category_theory.arrow.iso_mk (C.X_prev_iso hij) (category_theory.iso.refl (category_theory.arrow.mk (C.d_to j)).right) _) (category_theory.arrow.iso_mk (category_theory.iso.refl (category_theory.arrow.mk (C.d_from j)).left) (C.X_next_iso hjk) _) _
The 0th homology of a chain complex is isomorphic to the cokernel of d : C₁ ⟶ C₀
.
Equations
- C.homology_zero_iso = homology.map_iso _ _ (category_theory.arrow.iso_mk (homological_complex.X_prev_iso C chain_complex.homology_zero_iso._proof_23) (category_theory.iso.refl (category_theory.arrow.mk (homological_complex.d_to C 0)).right) _) (category_theory.arrow.iso_mk (category_theory.iso.refl (category_theory.arrow.mk (homological_complex.d_from C 0)).left) (category_theory.iso.refl (category_theory.arrow.mk (homological_complex.d_from C 0)).right) _) _ ≪≫ homology_of_zero_right (C.d 1 0)
The 0th cohomology of a cochain complex is isomorphic to the kernel of d : C₀ → C₁
.
Equations
- C.homology_zero_iso = homology.map_iso _ _ (category_theory.arrow.iso_mk (homological_complex.X_prev_iso_self C cochain_complex.homology_zero_iso._proof_19) (category_theory.iso.refl (category_theory.arrow.mk (homological_complex.d_to C 0)).right) _) (category_theory.arrow.iso_mk (category_theory.iso.refl (category_theory.arrow.mk (homological_complex.d_from C 0)).left) (homological_complex.X_next_iso C cochain_complex.homology_zero_iso._proof_21) _) _ ≪≫ homology_of_zero_left (C.d 0 1)
The n + 1
th homology of a chain complex (as kernel of 'the differential from Cₙ₊₁
' modulo
the image of 'the differential to Cₙ₊₁
') is isomorphic to the kernel of d : Cₙ₊₁ → Cₙ
modulo
the image of d : Cₙ₊₂ → Cₙ₊₁
.
Equations
The n + 1
th cohomology of a cochain complex (as kernel of 'the differential from Cₙ₊₁
'
modulo the image of 'the differential to Cₙ₊₁
') is isomorphic to the kernel of d : Cₙ₊₁ → Cₙ₊₂
modulo the image of d : Cₙ → Cₙ₊₁
.
Equations
Computing the cycles is functorial.
The morphism between cycles induced by a chain map.
Cycles as a functor.
Equations
- cycles_functor V c i = {obj := λ (C : homological_complex V c), ↑(C.cycles i), map := λ (C₁ C₂ : homological_complex V c) (f : C₁ ⟶ C₂), cycles_map f i, map_id' := _, map_comp' := _}
Instances for cycles_functor
Computing the boundaries is functorial.
The morphism between boundaries induced by a chain map.
Boundaries as a functor.
Equations
- boundaries_functor V c i = {obj := λ (C : homological_complex V c), ↑(C.boundaries i), map := λ (C₁ C₂ : homological_complex V c) (f : C₁ ⟶ C₂), category_theory.limits.image_subobject_map (homological_complex.hom.sq_to f i), map_id' := _, map_comp' := _}
Instances for boundaries_functor
The boundaries_to_cycles
morphisms are natural.
The natural transformation from the boundaries functor to the cycles functor.
Equations
- boundaries_to_cycles_nat_trans V c i = {app := λ (C : homological_complex V c), C.boundaries_to_cycles i, naturality' := _}
The i
-th homology, as a functor to V
.
Equations
- homology_functor V c i = {obj := λ (C : homological_complex V c), C.homology i, map := λ (C₁ C₂ : homological_complex V c) (f : C₁ ⟶ C₂), homology.map _ _ (homological_complex.hom.sq_to f i) (homological_complex.hom.sq_from f i) _, map_id' := _, map_comp' := _}
Instances for homology_functor
The homology functor from ι
-indexed complexes to ι
-graded objects in V
.
Equations
- graded_homology_functor V c = {obj := λ (C : homological_complex V c) (i : ι), C.homology i, map := λ (C C' : homological_complex V c) (f : C ⟶ C') (i : ι), (homology_functor V c i).map f, map_id' := _, map_comp' := _}