Documentation

Mathlib.Algebra.Homology.ShortComplex.Homology

Homology of short complexes #

In this file, we shall define the homology of short complexes S, i.e. diagrams f : X₁ ⟶ X₂ and g : X₂ ⟶ X₃ such that f ≫ g = 0. We shall say that [S.HasHomology] when there exists h : S.HomologyData. A homology data for S consists of compatible left/right homology data left and right. The left homology data left involves an object left.H that is a cokernel of the canonical map S.X₁ ⟶ K where K is a kernel of g. On the other hand, the dual notion right.H is a kernel of the canonical morphism Q ⟶ S.X₃ when Q is a cokernel of f. The compatibility that is required involves an isomorphism left.H ≅ right.H which makes a certain pentagon commute. When such a homology data exists, S.homology shall be defined as h.left.H for a chosen h : S.HomologyData.

This definition requires very little assumption on the category (only the existence of zero morphisms). We shall prove that in abelian categories, all short complexes have homology data.

Note: This definition arose by the end of the Liquid Tensor Experiment which contained a structure has_homology which is quite similar to S.HomologyData. After the category ShortComplex C was introduced by J. Riou, A. Topaz suggested such a structure could be used as a basis for the definition of homology.

A homology data for a short complex consists of two compatible left and right homology data

Instances For
    @[simp]

    the pentagon relation expressing the compatibility of the left and right homology data

    structure CategoryTheory.ShortComplex.HomologyMapData {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) (h₁ : S₁.HomologyData) (h₂ : S₂.HomologyData) :

    A homology map data for a morphism φ : S₁ ⟶ S₂ where both S₁ and S₂ are equipped with homology data consists of left and right homology map data.

    Instances For
      instance CategoryTheory.ShortComplex.HomologyMapData.instSubsingleton {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} {φ : S₁ S₂} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} :
      Subsingleton (HomologyMapData φ h₁ h₂)
      @[implicit_reducible]
      instance CategoryTheory.ShortComplex.HomologyMapData.instInhabited {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} {φ : S₁ S₂} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} :
      Inhabited (HomologyMapData φ h₁ h₂)
      @[implicit_reducible]
      instance CategoryTheory.ShortComplex.HomologyMapData.instUnique {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} {φ : S₁ S₂} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} :
      Unique (HomologyMapData φ h₁ h₂)

      A choice of the (unique) homology map data associated with a morphism φ : S₁ ⟶ S₂ where both short complexes S₁ and S₂ are equipped with homology data.

      Instances For
        theorem CategoryTheory.ShortComplex.HomologyMapData.congr_left_φH {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} {φ : S₁ S₂} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} {γ₁ γ₂ : HomologyMapData φ h₁ h₂} (eq : γ₁ = γ₂) :
        γ₁.left.φH = γ₂.left.φH

        When the first map S.f is zero, this is the homology data on S given by any limit kernel fork of S.g

        Instances For

          When the first map S.f is zero, this is the homology data on S given by the chosen kernel S.g

          Instances For

            When the second map S.g is zero, this is the homology data on S given by any colimit cokernel cofork of S.f

            Instances For

              When the second map S.g is zero, this is the homology data on S given by the chosen cokernel S.f

              Instances For
                noncomputable def CategoryTheory.ShortComplex.HomologyData.ofZeros {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] (S : ShortComplex C) (hf : S.f = 0) (hg : S.g = 0) :

                When both S.f and S.g are zero, the middle object S.X₂ gives a homology data on S

                Instances For
                  noncomputable def CategoryTheory.ShortComplex.HomologyData.ofEpiOfIsIsoOfMono {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) (h : S₁.HomologyData) [Epi φ.τ₁] [IsIso φ.τ₂] [Mono φ.τ₃] :

                  If φ : S₁ ⟶ S₂ is a morphism of short complexes such that φ.τ₁ is epi, φ.τ₂ is an iso and φ.τ₃ is mono, then a homology data for S₁ induces a homology data for S₂. The inverse construction is ofEpiOfIsIsoOfMono'.

                  Instances For
                    noncomputable def CategoryTheory.ShortComplex.HomologyData.ofEpiOfIsIsoOfMono' {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) (h : S₂.HomologyData) [Epi φ.τ₁] [IsIso φ.τ₂] [Mono φ.τ₃] :

                    If φ : S₁ ⟶ S₂ is a morphism of short complexes such that φ.τ₁ is epi, φ.τ₂ is an iso and φ.τ₃ is mono, then a homology data for S₂ induces a homology data for S₁. The inverse construction is ofEpiOfIsIsoOfMono.

                    Instances For
                      noncomputable def CategoryTheory.ShortComplex.HomologyData.ofIso {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (e : S₁ S₂) (h : S₁.HomologyData) :

                      If e : S₁ ≅ S₂ is an isomorphism of short complexes and h₁ : HomologyData S₁, this is the homology data for S₂ deduced from the isomorphism.

                      Instances For

                        A homology data for a short complex S induces a homology data for S.op.

                        Instances For

                          A homology data for a short complex S in the opposite category induces a homology data for S.unop.

                          Instances For

                            A short complex S has homology when there exists a S.HomologyData

                            • condition : Nonempty S.HomologyData

                              the condition that there exists a homology data

                            Instances

                              A chosen S.HomologyData for a short complex S that has homology

                              Instances For
                                instance CategoryTheory.ShortComplex.hasHomology_of_hasCokernel {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {X Y : C} (f : X Y) (Z : C) [Limits.HasCokernel f] :
                                { X₁ := X, X₂ := Y, X₃ := Z, f := f, g := 0, zero := }.HasHomology
                                instance CategoryTheory.ShortComplex.hasHomology_of_hasKernel {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {Y Z : C} (g : Y Z) (X : C) [Limits.HasKernel g] :
                                { X₁ := X, X₂ := Y, X₃ := Z, f := 0, g := g, zero := }.HasHomology
                                instance CategoryTheory.ShortComplex.hasHomology_of_zeros {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] (X Y Z : C) :
                                { X₁ := X, X₂ := Y, X₃ := Z, f := 0, g := 0, zero := }.HasHomology

                                The homology map data associated to the identity morphism of a short complex.

                                Instances For

                                  The homology map data associated to the zero morphism between two short complexes.

                                  Instances For
                                    def CategoryTheory.ShortComplex.HomologyMapData.comp {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ S₃ : ShortComplex C} {φ : S₁ S₂} {φ' : S₂ S₃} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} {h₃ : S₃.HomologyData} (ψ : HomologyMapData φ h₁ h₂) (ψ' : HomologyMapData φ' h₂ h₃) :

                                    The composition of homology map data.

                                    Instances For
                                      @[simp]
                                      theorem CategoryTheory.ShortComplex.HomologyMapData.comp_right {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ S₃ : ShortComplex C} {φ : S₁ S₂} {φ' : S₂ S₃} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} {h₃ : S₃.HomologyData} (ψ : HomologyMapData φ h₁ h₂) (ψ' : HomologyMapData φ' h₂ h₃) :
                                      (ψ.comp ψ').right = ψ.right.comp ψ'.right
                                      @[simp]
                                      theorem CategoryTheory.ShortComplex.HomologyMapData.comp_left {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ S₃ : ShortComplex C} {φ : S₁ S₂} {φ' : S₂ S₃} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} {h₃ : S₃.HomologyData} (ψ : HomologyMapData φ h₁ h₂) (ψ' : HomologyMapData φ' h₂ h₃) :
                                      (ψ.comp ψ').left = ψ.left.comp ψ'.left
                                      def CategoryTheory.ShortComplex.HomologyMapData.op {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} {φ : S₁ S₂} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} (ψ : HomologyMapData φ h₁ h₂) :
                                      HomologyMapData (opMap φ) h₂.op h₁.op

                                      A homology map data for a morphism of short complexes induces a homology map data in the opposite category.

                                      Instances For
                                        @[simp]
                                        theorem CategoryTheory.ShortComplex.HomologyMapData.op_right {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} {φ : S₁ S₂} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} (ψ : HomologyMapData φ h₁ h₂) :
                                        ψ.op.right = ψ.left.op
                                        @[simp]
                                        theorem CategoryTheory.ShortComplex.HomologyMapData.op_left {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} {φ : S₁ S₂} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} (ψ : HomologyMapData φ h₁ h₂) :
                                        ψ.op.left = ψ.right.op
                                        def CategoryTheory.ShortComplex.HomologyMapData.unop {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex Cᵒᵖ} {φ : S₁ S₂} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} (ψ : HomologyMapData φ h₁ h₂) :

                                        A homology map data for a morphism of short complexes in the opposite category induces a homology map data in the original category.

                                        Instances For
                                          @[simp]
                                          theorem CategoryTheory.ShortComplex.HomologyMapData.unop_left {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex Cᵒᵖ} {φ : S₁ S₂} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} (ψ : HomologyMapData φ h₁ h₂) :
                                          @[simp]
                                          theorem CategoryTheory.ShortComplex.HomologyMapData.unop_right {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex Cᵒᵖ} {φ : S₁ S₂} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} (ψ : HomologyMapData φ h₁ h₂) :
                                          noncomputable def CategoryTheory.ShortComplex.HomologyMapData.ofZeros {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) (hf₁ : S₁.f = 0) (hg₁ : S₁.g = 0) (hf₂ : S₂.f = 0) (hg₂ : S₂.g = 0) :
                                          HomologyMapData φ (HomologyData.ofZeros S₁ hf₁ hg₁) (HomologyData.ofZeros S₂ hf₂ hg₂)

                                          When S₁.f, S₁.g, S₂.f and S₂.g are all zero, the action on homology of a morphism φ : S₁ ⟶ S₂ is given by the action φ.τ₂ on the middle objects.

                                          Instances For
                                            @[simp]
                                            theorem CategoryTheory.ShortComplex.HomologyMapData.ofZeros_left {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) (hf₁ : S₁.f = 0) (hg₁ : S₁.g = 0) (hf₂ : S₂.f = 0) (hg₂ : S₂.g = 0) :
                                            (ofZeros φ hf₁ hg₁ hf₂ hg₂).left = LeftHomologyMapData.ofZeros φ hf₁ hg₁ hf₂ hg₂
                                            @[simp]
                                            theorem CategoryTheory.ShortComplex.HomologyMapData.ofZeros_right {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) (hf₁ : S₁.f = 0) (hg₁ : S₁.g = 0) (hf₂ : S₂.f = 0) (hg₂ : S₂.g = 0) :
                                            (ofZeros φ hf₁ hg₁ hf₂ hg₂).right = RightHomologyMapData.ofZeros φ hf₁ hg₁ hf₂ hg₂
                                            def CategoryTheory.ShortComplex.HomologyMapData.ofIsColimitCokernelCofork {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) (hg₁ : S₁.g = 0) (c₁ : Limits.CokernelCofork S₁.f) (hc₁ : Limits.IsColimit c₁) (hg₂ : S₂.g = 0) (c₂ : Limits.CokernelCofork S₂.f) (hc₂ : Limits.IsColimit c₂) (f : c₁.pt c₂.pt) (comm : CategoryStruct.comp φ.τ₂ (Limits.Cofork.π c₂) = CategoryStruct.comp (Limits.Cofork.π c₁) f) :

                                            When S₁.g and S₂.g are zero and we have chosen colimit cokernel coforks c₁ and c₂ for S₁.f and S₂.f respectively, the action on homology of a morphism φ : S₁ ⟶ S₂ of short complexes is given by the unique morphism f : c₁.pt ⟶ c₂.pt such that φ.τ₂ ≫ c₂.π = c₁.π ≫ f.

                                            Instances For
                                              @[simp]
                                              theorem CategoryTheory.ShortComplex.HomologyMapData.ofIsColimitCokernelCofork_right {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) (hg₁ : S₁.g = 0) (c₁ : Limits.CokernelCofork S₁.f) (hc₁ : Limits.IsColimit c₁) (hg₂ : S₂.g = 0) (c₂ : Limits.CokernelCofork S₂.f) (hc₂ : Limits.IsColimit c₂) (f : c₁.pt c₂.pt) (comm : CategoryStruct.comp φ.τ₂ (Limits.Cofork.π c₂) = CategoryStruct.comp (Limits.Cofork.π c₁) f) :
                                              (ofIsColimitCokernelCofork φ hg₁ c₁ hc₁ hg₂ c₂ hc₂ f comm).right = RightHomologyMapData.ofIsColimitCokernelCofork φ hg₁ c₁ hc₁ hg₂ c₂ hc₂ f comm
                                              @[simp]
                                              theorem CategoryTheory.ShortComplex.HomologyMapData.ofIsColimitCokernelCofork_left {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) (hg₁ : S₁.g = 0) (c₁ : Limits.CokernelCofork S₁.f) (hc₁ : Limits.IsColimit c₁) (hg₂ : S₂.g = 0) (c₂ : Limits.CokernelCofork S₂.f) (hc₂ : Limits.IsColimit c₂) (f : c₁.pt c₂.pt) (comm : CategoryStruct.comp φ.τ₂ (Limits.Cofork.π c₂) = CategoryStruct.comp (Limits.Cofork.π c₁) f) :
                                              (ofIsColimitCokernelCofork φ hg₁ c₁ hc₁ hg₂ c₂ hc₂ f comm).left = LeftHomologyMapData.ofIsColimitCokernelCofork φ hg₁ c₁ hc₁ hg₂ c₂ hc₂ f comm
                                              def CategoryTheory.ShortComplex.HomologyMapData.ofIsLimitKernelFork {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) (hf₁ : S₁.f = 0) (c₁ : Limits.KernelFork S₁.g) (hc₁ : Limits.IsLimit c₁) (hf₂ : S₂.f = 0) (c₂ : Limits.KernelFork S₂.g) (hc₂ : Limits.IsLimit c₂) (f : c₁.pt c₂.pt) (comm : CategoryStruct.comp (Limits.Fork.ι c₁) φ.τ₂ = CategoryStruct.comp f (Limits.Fork.ι c₂)) :
                                              HomologyMapData φ (HomologyData.ofIsLimitKernelFork S₁ hf₁ c₁ hc₁) (HomologyData.ofIsLimitKernelFork S₂ hf₂ c₂ hc₂)

                                              When S₁.f and S₂.f are zero and we have chosen limit kernel forks c₁ and c₂ for S₁.g and S₂.g respectively, the action on homology of a morphism φ : S₁ ⟶ S₂ of short complexes is given by the unique morphism f : c₁.pt ⟶ c₂.pt such that c₁.ι ≫ φ.τ₂ = f ≫ c₂.ι.

                                              Instances For
                                                @[simp]
                                                theorem CategoryTheory.ShortComplex.HomologyMapData.ofIsLimitKernelFork_left {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) (hf₁ : S₁.f = 0) (c₁ : Limits.KernelFork S₁.g) (hc₁ : Limits.IsLimit c₁) (hf₂ : S₂.f = 0) (c₂ : Limits.KernelFork S₂.g) (hc₂ : Limits.IsLimit c₂) (f : c₁.pt c₂.pt) (comm : CategoryStruct.comp (Limits.Fork.ι c₁) φ.τ₂ = CategoryStruct.comp f (Limits.Fork.ι c₂)) :
                                                (ofIsLimitKernelFork φ hf₁ c₁ hc₁ hf₂ c₂ hc₂ f comm).left = LeftHomologyMapData.ofIsLimitKernelFork φ hf₁ c₁ hc₁ hf₂ c₂ hc₂ f comm
                                                @[simp]
                                                theorem CategoryTheory.ShortComplex.HomologyMapData.ofIsLimitKernelFork_right {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) (hf₁ : S₁.f = 0) (c₁ : Limits.KernelFork S₁.g) (hc₁ : Limits.IsLimit c₁) (hf₂ : S₂.f = 0) (c₂ : Limits.KernelFork S₂.g) (hc₂ : Limits.IsLimit c₂) (f : c₁.pt c₂.pt) (comm : CategoryStruct.comp (Limits.Fork.ι c₁) φ.τ₂ = CategoryStruct.comp f (Limits.Fork.ι c₂)) :
                                                (ofIsLimitKernelFork φ hf₁ c₁ hc₁ hf₂ c₂ hc₂ f comm).right = RightHomologyMapData.ofIsLimitKernelFork φ hf₁ c₁ hc₁ hf₂ c₂ hc₂ f comm

                                                When both maps S.f and S.g of a short complex S are zero, this is the homology map data (for the identity of S) which relates the homology data ofZeros and ofIsColimitCokernelCofork.

                                                Instances For

                                                  When both maps S.f and S.g of a short complex S are zero, this is the homology map data (for the identity of S) which relates the homology data HomologyData.ofIsLimitKernelFork and ofZeros .

                                                  Instances For

                                                    This homology map data expresses compatibilities of the homology data constructed by HomologyData.ofEpiOfIsIsoOfMono

                                                    Instances For

                                                      This homology map data expresses compatibilities of the homology data constructed by HomologyData.ofEpiOfIsIsoOfMono'

                                                      Instances For

                                                        The homology of a short complex is the left.H field of a chosen homology data.

                                                        Instances For

                                                          When a short complex has homology, this is the canonical isomorphism S.leftHomology ≅ S.homology.

                                                          Instances For

                                                            When a short complex has homology, this is the canonical isomorphism S.rightHomology ≅ S.homology.

                                                            Instances For

                                                              When a short complex has homology, its homology can be computed using any left homology data.

                                                              Instances For

                                                                When a short complex has homology, its homology can be computed using any right homology data.

                                                                Instances For
                                                                  def CategoryTheory.ShortComplex.homologyMap' {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) (h₁ : S₁.HomologyData) (h₂ : S₂.HomologyData) :
                                                                  h₁.left.H h₂.left.H

                                                                  Given a morphism φ : S₁ ⟶ S₂ of short complexes and homology data h₁ and h₂ for S₁ and S₂ respectively, this is the induced homology map h₁.left.H ⟶ h₁.left.H.

                                                                  Instances For
                                                                    noncomputable def CategoryTheory.ShortComplex.homologyMap {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) [S₁.HasHomology] [S₂.HasHomology] :

                                                                    The homology map S₁.homology ⟶ S₂.homology induced by a morphism S₁ ⟶ S₂ of short complexes.

                                                                    Instances For
                                                                      theorem CategoryTheory.ShortComplex.HomologyMapData.homologyMap'_eq {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} {φ : S₁ S₂} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} (γ : HomologyMapData φ h₁ h₂) :
                                                                      homologyMap' φ h₁ h₂ = γ.left.φH
                                                                      theorem CategoryTheory.ShortComplex.HomologyMapData.cyclesMap'_eq {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} {φ : S₁ S₂} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} (γ : HomologyMapData φ h₁ h₂) :
                                                                      cyclesMap' φ h₁.left h₂.left = γ.left.φK
                                                                      theorem CategoryTheory.ShortComplex.HomologyMapData.opcyclesMap'_eq {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} {φ : S₁ S₂} {h₁ : S₁.HomologyData} {h₂ : S₂.HomologyData} (γ : HomologyMapData φ h₁ h₂) :
                                                                      opcyclesMap' φ h₁.right h₂.right = γ.right.φQ
                                                                      theorem CategoryTheory.ShortComplex.homologyMap'_comp {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ S₃ : ShortComplex C} (φ₁ : S₁ S₂) (φ₂ : S₂ S₃) (h₁ : S₁.HomologyData) (h₂ : S₂.HomologyData) (h₃ : S₃.HomologyData) :
                                                                      homologyMap' (CategoryStruct.comp φ₁ φ₂) h₁ h₃ = CategoryStruct.comp (homologyMap' φ₁ h₁ h₂) (homologyMap' φ₂ h₂ h₃)
                                                                      @[simp]
                                                                      theorem CategoryTheory.ShortComplex.homologyMap_comp {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ S₃ : ShortComplex C} [S₁.HasHomology] [S₂.HasHomology] [S₃.HasHomology] (φ₁ : S₁ S₂) (φ₂ : S₂ S₃) :
                                                                      def CategoryTheory.ShortComplex.homologyMapIso' {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (e : S₁ S₂) (h₁ : S₁.HomologyData) (h₂ : S₂.HomologyData) :
                                                                      h₁.left.H h₂.left.H

                                                                      Given an isomorphism S₁ ≅ S₂ of short complexes and homology data h₁ and h₂ for S₁ and S₂ respectively, this is the induced homology isomorphism h₁.left.H ≅ h₁.left.H.

                                                                      Instances For
                                                                        @[simp]
                                                                        theorem CategoryTheory.ShortComplex.homologyMapIso'_hom {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (e : S₁ S₂) (h₁ : S₁.HomologyData) (h₂ : S₂.HomologyData) :
                                                                        (homologyMapIso' e h₁ h₂).hom = homologyMap' e.hom h₁ h₂
                                                                        @[simp]
                                                                        theorem CategoryTheory.ShortComplex.homologyMapIso'_inv {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (e : S₁ S₂) (h₁ : S₁.HomologyData) (h₂ : S₂.HomologyData) :
                                                                        (homologyMapIso' e h₁ h₂).inv = homologyMap' e.inv h₂ h₁
                                                                        instance CategoryTheory.ShortComplex.isIso_homologyMap'_of_isIso {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) [IsIso φ] (h₁ : S₁.HomologyData) (h₂ : S₂.HomologyData) :
                                                                        IsIso (homologyMap' φ h₁ h₂)
                                                                        noncomputable def CategoryTheory.ShortComplex.homologyMapIso {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (e : S₁ S₂) [S₁.HasHomology] [S₂.HasHomology] :

                                                                        The homology isomorphism S₁.homology ⟶ S₂.homology induced by an isomorphism S₁ ≅ S₂ of short complexes.

                                                                        Instances For

                                                                          If a short complex S has both a left homology data h₁ and a right homology data h₂, this is the canonical morphism h₁.H ⟶ h₂.H.

                                                                          Instances For

                                                                            If a short complex S has both a left and right homology, this is the canonical morphism S.leftHomology ⟶ S.rightHomology.

                                                                            Instances For

                                                                              This is the homology data for a short complex S that is obtained from a left homology data h₁ and a right homology data h₂ when the comparison morphism leftRightHomologyComparison' h₁ h₂ : h₁.H ⟶ h₂.H is an isomorphism.

                                                                              Instances For

                                                                                We shall say that a category C is a category with homology when all short complexes have homology.

                                                                                Instances

                                                                                  The homology functor ShortComplex C ⥤ C for a category C with homology.

                                                                                  Instances For

                                                                                    The canonical morphism S.cycles ⟶ S.homology for a short complex S that has homology.

                                                                                    Instances For

                                                                                      The canonical morphism S.homology ⟶ S.opcycles for a short complex S that has homology.

                                                                                      Instances For

                                                                                        The homology S.homology of a short complex is the cokernel of the morphism S.toCycles : S.X₁ ⟶ S.cycles.

                                                                                        Instances For

                                                                                          The homology S.homology of a short complex is the kernel of the morphism S.fromOpcycles : S.opcycles ⟶ S.X₃.

                                                                                          Instances For

                                                                                            Given a morphism k : S.cycles ⟶ A such that S.toCycles ≫ k = 0, this is the induced morphism S.homology ⟶ A.

                                                                                            Instances For

                                                                                              Given a morphism k : A ⟶ S.opcycles such that k ≫ S.fromOpcycles = 0, this is the induced morphism A ⟶ S.homology.

                                                                                              Instances For

                                                                                                The homology of a short complex S identifies to the kernel of the induced morphism cokernel S.f ⟶ S.X₃.

                                                                                                Instances For

                                                                                                  The homology of a short complex S identifies to the cokernel of the induced morphism S.X₁ ⟶ kernel S.g.

                                                                                                  Instances For

                                                                                                    The canonical isomorphism S.op.homologyOpposite.op S.homology when a short complex S has homology.

                                                                                                    Instances For
                                                                                                      theorem CategoryTheory.ShortComplex.homologyMap'_op {C : Type u} [Category.{v, u} C] [Limits.HasZeroMorphisms C] {S₁ S₂ : ShortComplex C} (φ : S₁ S₂) (h₁ : S₁.HomologyData) (h₂ : S₂.HomologyData) :

                                                                                                      The natural isomorphism (homologyFunctor C).op ≅ opFunctor C ⋙ homologyFunctor Cᵒᵖ which relates the homology in C and in Cᵒᵖ.

                                                                                                      Instances For

                                                                                                        The canonical isomorphism S.cycles ≅ S.homology when S.f = 0.

                                                                                                        Instances For

                                                                                                          The canonical isomorphism S.homology ≅ S.opcycles when S.g = 0.

                                                                                                          Instances For

                                                                                                            Given a short complex S such that S.HasHomology, this is the canonical left homology data for S whose K and H fields are respectively S.cycles and S.homology.

                                                                                                            Instances For

                                                                                                              Given a short complex S such that S.HasHomology, this is the canonical right homology data for S whose Q and H fields are respectively S.opcycles and S.homology.

                                                                                                              Instances For

                                                                                                                Given a short complex S such that S.HasHomology, this is the canonical homology data for S whose left.K, left/right.H and right.Q fields are respectively S.cycles, S.homology and S.opcycles.

                                                                                                                Instances For