Documentation

Mathlib.Algebra.Homology.ImageToKernel

Image-to-kernel comparison maps #

Whenever f : A ⟶ B and g : B ⟶ C satisfy w : f ≫ g = 0, we have image_le_kernel f g w : imageSubobject f ≤ kernelSubobject g (assuming the appropriate images and kernels exist).

imageToKernel f g w is the corresponding morphism between objects in C.

We define homology f g w of such a pair as the cokernel of imageToKernel f g w.

def imageToKernel {V : Type u} [CategoryTheory.Category.{v, u} V] [CategoryTheory.Limits.HasZeroMorphisms V] {A : V} {B : V} {C : V} (f : A B) [CategoryTheory.Limits.HasImage f] (g : B C) [CategoryTheory.Limits.HasKernel g] (w : CategoryTheory.CategoryStruct.comp f g = 0) :
CategoryTheory.Subobject.underlying.obj (CategoryTheory.Limits.imageSubobject f) CategoryTheory.Subobject.underlying.obj (CategoryTheory.Limits.kernelSubobject g)

The canonical morphism imageSubobject f ⟶ kernelSubobject g when f ≫ g = 0.

Instances For

    imageToKernel for A --0--> B --g--> C, where g is a mono is itself an epi (i.e. the sequence is exact at B).

    imageToKernel for A --f--> B --0--> C, where g is an epi is itself an epi (i.e. the sequence is exact at B).

    The homology of a pair of morphisms f : A ⟶ B and g : B ⟶ C satisfying f ≫ g = 0 is the cokernel of the imageToKernel morphism for f and g.

    Instances For

      The morphism from cycles to homology.

      Instances For

        To construct a map out of homology, it suffices to construct a map out of the cycles which vanishes on boundaries.

        Instances For

          To check two morphisms out of homology f g w are equal, it suffices to check on cycles.

          Given compatible commutative squares between a pair f g and a pair f' g' satisfying f ≫ g = 0 and f' ≫ g' = 0, the imageToKernel morphisms intertwine the induced map on kernels and the induced map on images.

          Given compatible commutative squares between a pair f g and a pair f' g' satisfying f ≫ g = 0 and f' ≫ g' = 0, we get a morphism on homology.

          Instances For
            theorem homology.comp_right_eq_comp_left {V : Type u_2} [CategoryTheory.Category.{u_3, u_2} V] {A₁ : V} {B₁ : V} {C₁ : V} {A₂ : V} {B₂ : V} {C₂ : V} {A₃ : V} {B₃ : V} {C₃ : V} {f₁ : A₁ B₁} {g₁ : B₁ C₁} {f₂ : A₂ B₂} {g₂ : B₂ C₂} {f₃ : A₃ B₃} {g₃ : B₃ C₃} {α₁ : CategoryTheory.Arrow.mk f₁ CategoryTheory.Arrow.mk f₂} {β₁ : CategoryTheory.Arrow.mk g₁ CategoryTheory.Arrow.mk g₂} {α₂ : CategoryTheory.Arrow.mk f₂ CategoryTheory.Arrow.mk f₃} {β₂ : CategoryTheory.Arrow.mk g₂ CategoryTheory.Arrow.mk g₃} (p₁ : α₁.right = β₁.left) (p₂ : α₂.right = β₂.left) :

            Auxiliary lemma for homology computations.

            theorem homology.map_comp_assoc {V : Type u} [CategoryTheory.Category.{v, u} V] [CategoryTheory.Limits.HasZeroMorphisms V] {A₁ : V} {B₁ : V} {C₁ : V} {f₁ : A₁ B₁} [CategoryTheory.Limits.HasImage f₁] {g₁ : B₁ C₁} [CategoryTheory.Limits.HasKernel g₁] (w₁ : CategoryTheory.CategoryStruct.comp f₁ g₁ = 0) {A₂ : V} {B₂ : V} {C₂ : V} {f₂ : A₂ B₂} [CategoryTheory.Limits.HasImage f₂] {g₂ : B₂ C₂} [CategoryTheory.Limits.HasKernel g₂] (w₂ : CategoryTheory.CategoryStruct.comp f₂ g₂ = 0) {A₃ : V} {B₃ : V} {C₃ : V} {f₃ : A₃ B₃} [CategoryTheory.Limits.HasImage f₃] {g₃ : B₃ C₃} [CategoryTheory.Limits.HasKernel g₃] (w₃ : CategoryTheory.CategoryStruct.comp f₃ g₃ = 0) (α₁ : CategoryTheory.Arrow.mk f₁ CategoryTheory.Arrow.mk f₂) [CategoryTheory.Limits.HasImageMap α₁] (β₁ : CategoryTheory.Arrow.mk g₁ CategoryTheory.Arrow.mk g₂) (α₂ : CategoryTheory.Arrow.mk f₂ CategoryTheory.Arrow.mk f₃) [CategoryTheory.Limits.HasImageMap α₂] (β₂ : CategoryTheory.Arrow.mk g₂ CategoryTheory.Arrow.mk g₃) [CategoryTheory.Limits.HasCokernel (imageToKernel f₁ g₁ w₁)] [CategoryTheory.Limits.HasCokernel (imageToKernel f₂ g₂ w₂)] [CategoryTheory.Limits.HasCokernel (imageToKernel f₃ g₃ w₃)] (p₁ : α₁.right = β₁.left) (p₂ : α₂.right = β₂.left) {Z : V} (h : homology f₃ g₃ w₃ Z) :
            theorem homology.map_comp {V : Type u} [CategoryTheory.Category.{v, u} V] [CategoryTheory.Limits.HasZeroMorphisms V] {A₁ : V} {B₁ : V} {C₁ : V} {f₁ : A₁ B₁} [CategoryTheory.Limits.HasImage f₁] {g₁ : B₁ C₁} [CategoryTheory.Limits.HasKernel g₁] (w₁ : CategoryTheory.CategoryStruct.comp f₁ g₁ = 0) {A₂ : V} {B₂ : V} {C₂ : V} {f₂ : A₂ B₂} [CategoryTheory.Limits.HasImage f₂] {g₂ : B₂ C₂} [CategoryTheory.Limits.HasKernel g₂] (w₂ : CategoryTheory.CategoryStruct.comp f₂ g₂ = 0) {A₃ : V} {B₃ : V} {C₃ : V} {f₃ : A₃ B₃} [CategoryTheory.Limits.HasImage f₃] {g₃ : B₃ C₃} [CategoryTheory.Limits.HasKernel g₃] (w₃ : CategoryTheory.CategoryStruct.comp f₃ g₃ = 0) (α₁ : CategoryTheory.Arrow.mk f₁ CategoryTheory.Arrow.mk f₂) [CategoryTheory.Limits.HasImageMap α₁] (β₁ : CategoryTheory.Arrow.mk g₁ CategoryTheory.Arrow.mk g₂) (α₂ : CategoryTheory.Arrow.mk f₂ CategoryTheory.Arrow.mk f₃) [CategoryTheory.Limits.HasImageMap α₂] (β₂ : CategoryTheory.Arrow.mk g₂ CategoryTheory.Arrow.mk g₃) [CategoryTheory.Limits.HasCokernel (imageToKernel f₁ g₁ w₁)] [CategoryTheory.Limits.HasCokernel (imageToKernel f₂ g₂ w₂)] [CategoryTheory.Limits.HasCokernel (imageToKernel f₃ g₃ w₃)] (p₁ : α₁.right = β₁.left) (p₂ : α₂.right = β₂.left) :
            CategoryTheory.CategoryStruct.comp (homology.map w₁ w₂ α₁ β₁ p₁) (homology.map w₂ w₃ α₂ β₂ p₂) = homology.map w₁ w₃ (CategoryTheory.CategoryStruct.comp α₁ α₂) (CategoryTheory.CategoryStruct.comp β₁ β₂) (_ : (CategoryTheory.CategoryStruct.comp α₁ α₂).right = (CategoryTheory.CategoryStruct.comp β₁ β₂).left)
            def homology.mapIso {V : Type u} [CategoryTheory.Category.{v, u} V] [CategoryTheory.Limits.HasZeroMorphisms V] {A₁ : V} {B₁ : V} {C₁ : V} {f₁ : A₁ B₁} [CategoryTheory.Limits.HasImage f₁] {g₁ : B₁ C₁} [CategoryTheory.Limits.HasKernel g₁] (w₁ : CategoryTheory.CategoryStruct.comp f₁ g₁ = 0) {A₂ : V} {B₂ : V} {C₂ : V} {f₂ : A₂ B₂} [CategoryTheory.Limits.HasImage f₂] {g₂ : B₂ C₂} [CategoryTheory.Limits.HasKernel g₂] (w₂ : CategoryTheory.CategoryStruct.comp f₂ g₂ = 0) [CategoryTheory.Limits.HasCokernel (imageToKernel f₁ g₁ w₁)] [CategoryTheory.Limits.HasCokernel (imageToKernel f₂ g₂ w₂)] (α : CategoryTheory.Arrow.mk f₁ CategoryTheory.Arrow.mk f₂) (β : CategoryTheory.Arrow.mk g₁ CategoryTheory.Arrow.mk g₂) (p : α.hom.right = β.hom.left) :
            homology f₁ g₁ w₁ homology f₂ g₂ w₂

            An isomorphism between two three-term complexes induces an isomorphism on homology.

            Instances For

              homology f g w ≅ homology f' g' w' if f = f' and g = g'. (Note the objects are not changing here.)

              Instances For

                We provide a variant imageToKernel' : image f ⟶ kernel g, and use this to give alternative formulas for homology f g w.

                While imageToKernel f g w provides a morphism imageSubobject f ⟶ kernelSubobject g in terms of the subobject API, this variant provides a morphism image f ⟶ kernel g, which is sometimes more convenient.

                Instances For