Documentation

Mathlib.Algebra.Homology.ShortComplex.ModuleCat

Homology and exactness of short complexes of modules #

In this file, the homology of a short complex S of abelian groups is identified with the quotient of LinearMap.ker S.g by the image of the morphism S.moduleCatToCycles : S.X₁ →ₗ[R] LinearMap.ker S.g induced by S.f.

def CategoryTheory.ShortComplex.moduleCatMk {R : Type u} [Ring R] {X₁ X₂ X₃ : Type v} [AddCommGroup X₁] [AddCommGroup X₂] [AddCommGroup X₃] [Module R X₁] [Module R X₂] [Module R X₃] (f : X₁ →ₗ[R] X₂) (g : X₂ →ₗ[R] X₃) (hfg : g ∘ₗ f = 0) :

Constructor for short complexes in ModuleCat.{v} R taking as inputs linear maps f and g and the vanishing of their composition.

Equations
Instances For
    @[simp]
    theorem CategoryTheory.ShortComplex.moduleCatMk_f_hom {R : Type u} [Ring R] {X₁ X₂ X₃ : Type v} [AddCommGroup X₁] [AddCommGroup X₂] [AddCommGroup X₃] [Module R X₁] [Module R X₂] [Module R X₃] (f : X₁ →ₗ[R] X₂) (g : X₂ →ₗ[R] X₃) (hfg : g ∘ₗ f = 0) :
    @[simp]
    theorem CategoryTheory.ShortComplex.moduleCatMk_X₃_carrier {R : Type u} [Ring R] {X₁ X₂ X₃ : Type v} [AddCommGroup X₁] [AddCommGroup X₂] [AddCommGroup X₃] [Module R X₁] [Module R X₂] [Module R X₃] (f : X₁ →ₗ[R] X₂) (g : X₂ →ₗ[R] X₃) (hfg : g ∘ₗ f = 0) :
    @[simp]
    theorem CategoryTheory.ShortComplex.moduleCatMk_X₃_isModule {R : Type u} [Ring R] {X₁ X₂ X₃ : Type v} [AddCommGroup X₁] [AddCommGroup X₂] [AddCommGroup X₃] [Module R X₁] [Module R X₂] [Module R X₃] (f : X₁ →ₗ[R] X₂) (g : X₂ →ₗ[R] X₃) (hfg : g ∘ₗ f = 0) :
    (CategoryTheory.ShortComplex.moduleCatMk f g hfg).X₃.isModule = inst✝
    @[simp]
    theorem CategoryTheory.ShortComplex.moduleCatMk_X₂_isModule {R : Type u} [Ring R] {X₁ X₂ X₃ : Type v} [AddCommGroup X₁] [AddCommGroup X₂] [AddCommGroup X₃] [Module R X₁] [Module R X₂] [Module R X₃] (f : X₁ →ₗ[R] X₂) (g : X₂ →ₗ[R] X₃) (hfg : g ∘ₗ f = 0) :
    (CategoryTheory.ShortComplex.moduleCatMk f g hfg).X₂.isModule = inst✝
    @[simp]
    theorem CategoryTheory.ShortComplex.moduleCatMk_g_hom {R : Type u} [Ring R] {X₁ X₂ X₃ : Type v} [AddCommGroup X₁] [AddCommGroup X₂] [AddCommGroup X₃] [Module R X₁] [Module R X₂] [Module R X₃] (f : X₁ →ₗ[R] X₂) (g : X₂ →ₗ[R] X₃) (hfg : g ∘ₗ f = 0) :
    @[simp]
    theorem CategoryTheory.ShortComplex.moduleCatMk_X₂_carrier {R : Type u} [Ring R] {X₁ X₂ X₃ : Type v} [AddCommGroup X₁] [AddCommGroup X₂] [AddCommGroup X₃] [Module R X₁] [Module R X₂] [Module R X₃] (f : X₁ →ₗ[R] X₂) (g : X₂ →ₗ[R] X₃) (hfg : g ∘ₗ f = 0) :
    @[simp]
    theorem CategoryTheory.ShortComplex.moduleCatMk_X₁_carrier {R : Type u} [Ring R] {X₁ X₂ X₃ : Type v} [AddCommGroup X₁] [AddCommGroup X₂] [AddCommGroup X₃] [Module R X₁] [Module R X₂] [Module R X₃] (f : X₁ →ₗ[R] X₂) (g : X₂ →ₗ[R] X₃) (hfg : g ∘ₗ f = 0) :
    @[simp]
    theorem CategoryTheory.ShortComplex.moduleCatMk_X₃_isAddCommGroup {R : Type u} [Ring R] {X₁ X₂ X₃ : Type v} [AddCommGroup X₁] [AddCommGroup X₂] [AddCommGroup X₃] [Module R X₁] [Module R X₂] [Module R X₃] (f : X₁ →ₗ[R] X₂) (g : X₂ →ₗ[R] X₃) (hfg : g ∘ₗ f = 0) :
    (CategoryTheory.ShortComplex.moduleCatMk f g hfg).X₃.isAddCommGroup = inst✝
    @[simp]
    theorem CategoryTheory.ShortComplex.moduleCatMk_X₁_isModule {R : Type u} [Ring R] {X₁ X₂ X₃ : Type v} [AddCommGroup X₁] [AddCommGroup X₂] [AddCommGroup X₃] [Module R X₁] [Module R X₂] [Module R X₃] (f : X₁ →ₗ[R] X₂) (g : X₂ →ₗ[R] X₃) (hfg : g ∘ₗ f = 0) :
    (CategoryTheory.ShortComplex.moduleCatMk f g hfg).X₁.isModule = inst✝
    @[simp]
    theorem CategoryTheory.ShortComplex.moduleCatMk_X₁_isAddCommGroup {R : Type u} [Ring R] {X₁ X₂ X₃ : Type v} [AddCommGroup X₁] [AddCommGroup X₂] [AddCommGroup X₃] [Module R X₁] [Module R X₂] [Module R X₃] (f : X₁ →ₗ[R] X₂) (g : X₂ →ₗ[R] X₃) (hfg : g ∘ₗ f = 0) :
    (CategoryTheory.ShortComplex.moduleCatMk f g hfg).X₁.isAddCommGroup = inst✝
    @[simp]
    theorem CategoryTheory.ShortComplex.moduleCatMk_X₂_isAddCommGroup {R : Type u} [Ring R] {X₁ X₂ X₃ : Type v} [AddCommGroup X₁] [AddCommGroup X₂] [AddCommGroup X₃] [Module R X₁] [Module R X₂] [Module R X₃] (f : X₁ →ₗ[R] X₂) (g : X₂ →ₗ[R] X₃) (hfg : g ∘ₗ f = 0) :
    (CategoryTheory.ShortComplex.moduleCatMk f g hfg).X₂.isAddCommGroup = inst✝
    @[simp]
    theorem CategoryTheory.ShortComplex.moduleCat_zero_apply {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) (x : S.X₁) :
    S.g.hom (S.f.hom x) = 0
    theorem CategoryTheory.ShortComplex.moduleCat_exact_iff {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) :
    S.Exact ∀ (x₂ : S.X₂), S.g.hom x₂ = 0∃ (x₁ : S.X₁), S.f.hom x₁ = x₂
    def CategoryTheory.ShortComplex.moduleCatMkOfKerLERange {R : Type u} [Ring R] {X₁ X₂ X₃ : ModuleCat R} (f : X₁ X₂) (g : X₂ X₃) (hfg : LinearMap.range f.hom LinearMap.ker g.hom) :

    Constructor for short complexes in ModuleCat.{v} R taking as inputs morphisms f and g and the assumption LinearMap.range f ≤ LinearMap.ker g.

    Equations
    Instances For
      @[simp]
      theorem CategoryTheory.ShortComplex.moduleCatMkOfKerLERange_X₃ {R : Type u} [Ring R] {X₁ X₂ X₃ : ModuleCat R} (f : X₁ X₂) (g : X₂ X₃) (hfg : LinearMap.range f.hom LinearMap.ker g.hom) :
      @[simp]
      theorem CategoryTheory.ShortComplex.moduleCatMkOfKerLERange_X₂ {R : Type u} [Ring R] {X₁ X₂ X₃ : ModuleCat R} (f : X₁ X₂) (g : X₂ X₃) (hfg : LinearMap.range f.hom LinearMap.ker g.hom) :
      @[simp]
      theorem CategoryTheory.ShortComplex.moduleCatMkOfKerLERange_f {R : Type u} [Ring R] {X₁ X₂ X₃ : ModuleCat R} (f : X₁ X₂) (g : X₂ X₃) (hfg : LinearMap.range f.hom LinearMap.ker g.hom) :
      @[simp]
      theorem CategoryTheory.ShortComplex.moduleCatMkOfKerLERange_X₁ {R : Type u} [Ring R] {X₁ X₂ X₃ : ModuleCat R} (f : X₁ X₂) (g : X₂ X₃) (hfg : LinearMap.range f.hom LinearMap.ker g.hom) :
      @[simp]
      theorem CategoryTheory.ShortComplex.moduleCatMkOfKerLERange_g {R : Type u} [Ring R] {X₁ X₂ X₃ : ModuleCat R} (f : X₁ X₂) (g : X₂ X₃) (hfg : LinearMap.range f.hom LinearMap.ker g.hom) :
      theorem CategoryTheory.ShortComplex.Exact.moduleCat_of_range_eq_ker {R : Type u} [Ring R] {X₁ X₂ X₃ : ModuleCat R} (f : X₁ X₂) (g : X₂ X₃) (hfg : LinearMap.range f.hom = LinearMap.ker g.hom) :

      The canonical linear map S.X₁ →ₗ[R] LinearMap.ker S.g induced by S.f.

      Equations
      • S.moduleCatToCycles = { toFun := fun (x : S.X₁) => S.f.hom x, , map_add' := , map_smul' := }
      Instances For
        @[simp]
        theorem CategoryTheory.ShortComplex.moduleCatToCycles_apply_coe {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) (x : S.X₁) :
        (S.moduleCatToCycles x) = S.f.hom x
        @[reducible, inline]

        The homology of S, defined as the quotient of the kernel of S.g by the image of S.moduleCatToCycles

        Equations
        Instances For
          @[reducible, inline]

          The canonical map ModuleCat.of R (LinearMap.ker S.g) ⟶ S.moduleCatHomology.

          Equations
          Instances For

            The explicit left homology data of a short complex of modules that is given by a kernel and a quotient given by the LinearMap API.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              @[simp]
              theorem CategoryTheory.ShortComplex.moduleCatLeftHomologyData_H {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) :
              S.moduleCatLeftHomologyData.H = S.moduleCatHomology
              @[simp]
              theorem CategoryTheory.ShortComplex.moduleCatLeftHomologyData_π {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) :
              S.moduleCatLeftHomologyData = S.moduleCatHomologyπ
              @[simp]
              theorem CategoryTheory.ShortComplex.moduleCatLeftHomologyData_i {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) :
              S.moduleCatLeftHomologyData.i = ModuleCat.ofHom (LinearMap.ker S.g.hom).subtype
              @[simp]
              theorem CategoryTheory.ShortComplex.moduleCatLeftHomologyData_f' {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) :
              S.moduleCatLeftHomologyData.f' = ModuleCat.ofHom S.moduleCatToCycles

              Given a short complex S of modules, this is the isomorphism between the abstract S.cycles of the homology API and the more concrete description as LinearMap.ker S.g.

              Equations
              • S.moduleCatCyclesIso = S.moduleCatLeftHomologyData.cyclesIso
              Instances For
                theorem CategoryTheory.ShortComplex.moduleCatCyclesIso_hom_subtype_assoc_apply {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) {Z : ModuleCat R} (h : ModuleCat.of R S.X₂ Z) (x : (CategoryTheory.forget (ModuleCat R)).obj S.cycles) :
                h ((ModuleCat.ofHom (LinearMap.ker S.g.hom).subtype) (S.moduleCatCyclesIso.hom x)) = h (S.iCycles x)
                theorem CategoryTheory.ShortComplex.moduleCatCyclesIso_hom_subtype_apply {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) (x : (CategoryTheory.forget (ModuleCat R)).obj S.cycles) :
                (ModuleCat.ofHom (LinearMap.ker S.g.hom).subtype) (S.moduleCatCyclesIso.hom x) = S.iCycles x
                theorem CategoryTheory.ShortComplex.moduleCatCyclesIso_inv_iCycles_assoc_apply {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) {Z : ModuleCat R} (h : S.X₂ Z) (x : (CategoryTheory.forget (ModuleCat R)).obj (ModuleCat.of R (LinearMap.ker S.g.hom))) :
                h (S.iCycles (S.moduleCatCyclesIso.inv x)) = h ((ModuleCat.ofHom (LinearMap.ker S.g.hom).subtype) x)
                theorem CategoryTheory.ShortComplex.moduleCatCyclesIso_inv_iCycles_apply {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) (x : (CategoryTheory.forget (ModuleCat R)).obj (ModuleCat.of R (LinearMap.ker S.g.hom))) :
                S.iCycles (S.moduleCatCyclesIso.inv x) = (ModuleCat.ofHom (LinearMap.ker S.g.hom).subtype) x
                theorem CategoryTheory.ShortComplex.toCycles_moduleCatCyclesIso_hom_apply {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) (x : (CategoryTheory.forget (ModuleCat R)).obj S.X₁) :
                S.moduleCatCyclesIso.hom (S.toCycles x) = (ModuleCat.ofHom S.moduleCatToCycles) x
                theorem CategoryTheory.ShortComplex.toCycles_moduleCatCyclesIso_hom_assoc_apply {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) {Z : ModuleCat R} (h : ModuleCat.of R (LinearMap.ker S.g.hom) Z) (x : (CategoryTheory.forget (ModuleCat R)).obj S.X₁) :
                h (S.moduleCatCyclesIso.hom (S.toCycles x)) = h ((ModuleCat.ofHom S.moduleCatToCycles) x)
                noncomputable def CategoryTheory.ShortComplex.moduleCatHomologyIso {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) :
                S.homology S.moduleCatHomology

                Given a short complex S of modules, this is the isomorphism between the abstract S.homology of the homology API and the more explicit quotient of LinearMap.ker S.g by the image of S.moduleCatToCycles : S.X₁ →ₗ[R] LinearMap.ker S.g.

                Equations
                • S.moduleCatHomologyIso = S.moduleCatLeftHomologyData.homologyIso
                Instances For
                  @[simp]
                  theorem CategoryTheory.ShortComplex.π_moduleCatCyclesIso_hom {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) :
                  CategoryTheory.CategoryStruct.comp S.homologyπ S.moduleCatHomologyIso.hom = CategoryTheory.CategoryStruct.comp S.moduleCatCyclesIso.hom S.moduleCatHomologyπ
                  @[simp]
                  theorem CategoryTheory.ShortComplex.π_moduleCatCyclesIso_hom_assoc {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) {Z : ModuleCat R} (h : S.moduleCatHomology Z) :
                  CategoryTheory.CategoryStruct.comp S.homologyπ (CategoryTheory.CategoryStruct.comp S.moduleCatHomologyIso.hom h) = CategoryTheory.CategoryStruct.comp S.moduleCatCyclesIso.hom (CategoryTheory.CategoryStruct.comp S.moduleCatHomologyπ h)
                  theorem CategoryTheory.ShortComplex.π_moduleCatCyclesIso_hom_assoc_apply {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) {Z : ModuleCat R} (h : S.moduleCatHomology Z) (x : (CategoryTheory.forget (ModuleCat R)).obj S.cycles) :
                  h (S.moduleCatHomologyIso.hom (S.homologyπ x)) = h (S.moduleCatHomologyπ (S.moduleCatCyclesIso.hom x))
                  theorem CategoryTheory.ShortComplex.π_moduleCatCyclesIso_hom_apply {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) (x : (CategoryTheory.forget (ModuleCat R)).obj S.cycles) :
                  S.moduleCatHomologyIso.hom (S.homologyπ x) = S.moduleCatHomologyπ (S.moduleCatCyclesIso.hom x)
                  @[simp]
                  theorem CategoryTheory.ShortComplex.moduleCatCyclesIso_inv_π {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) :
                  CategoryTheory.CategoryStruct.comp S.moduleCatCyclesIso.inv S.homologyπ = CategoryTheory.CategoryStruct.comp S.moduleCatHomologyπ S.moduleCatHomologyIso.inv
                  @[simp]
                  theorem CategoryTheory.ShortComplex.moduleCatCyclesIso_inv_π_assoc_apply {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) {Z : ModuleCat R} (h : S.homology Z) (x : (CategoryTheory.forget (ModuleCat R)).obj (ModuleCat.of R (LinearMap.ker S.g.hom))) :
                  h (S.homologyπ (S.moduleCatCyclesIso.inv x)) = h (S.moduleCatHomologyIso.inv (S.moduleCatHomologyπ x))
                  theorem CategoryTheory.ShortComplex.moduleCatCyclesIso_inv_π_apply {R : Type u} [Ring R] (S : CategoryTheory.ShortComplex (ModuleCat R)) (x : (CategoryTheory.forget (ModuleCat R)).obj (ModuleCat.of R (LinearMap.ker S.g.hom))) :
                  S.homologyπ (S.moduleCatCyclesIso.inv x) = S.moduleCatHomologyIso.inv (S.moduleCatHomologyπ x)