Documentation

Mathlib.CategoryTheory.Abelian.Projective.Ext

Computing Ext using a projective resolution #

Given a projective resolution R of an object X in an abelian category C, we provide an API in order to construct elements in Ext X Y n in terms of the complex R.complex and to make computations in the Ext-group.

If R is a projective resolution of X, then Ext X Y n identifies to the type of cohomology classes of degree n from R.cochainComplex to (singleFunctor C 0).obj Y.

Equations
Instances For

    If R is a projective resolution of X, then Ext X Y n identifies to the type of cohomology classes of degree n from R.cochainComplex to (singleFunctor C 0).obj Y.

    Equations
    Instances For
      noncomputable def CategoryTheory.ProjectiveResolution.extMk {C : Type u} [Category.{v, u} C] [Abelian C] [HasExt C] {X Y : C} (R : ProjectiveResolution X) {n : ℕ} (f : R.complex.X n ⟶ Y) (m : ℕ) (hm : n + 1 = m) (hf : CategoryStruct.comp (R.complex.d m n) f = 0) :

      Given a projective resolution R of an object X of an abelian category, this is a constructor for elements in Ext X Y n which takes as an input a "cocycle" f : R.cocomplex.X n ⟶ Y.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem CategoryTheory.ProjectiveResolution.add_extMk {C : Type u} [Category.{v, u} C] [Abelian C] [HasExt C] {X Y : C} (R : ProjectiveResolution X) {n : ℕ} (f g : R.complex.X n ⟶ Y) (m : ℕ) (hm : n + 1 = m) (hf : CategoryStruct.comp (R.complex.d m n) f = 0) (hg : CategoryStruct.comp (R.complex.d m n) g = 0) :
        R.extMk f m hm hf + R.extMk g m hm hg = R.extMk (f + g) m hm ⋯
        theorem CategoryTheory.ProjectiveResolution.sub_extMk {C : Type u} [Category.{v, u} C] [Abelian C] [HasExt C] {X Y : C} (R : ProjectiveResolution X) {n : ℕ} (f g : R.complex.X n ⟶ Y) (m : ℕ) (hm : n + 1 = m) (hf : CategoryStruct.comp (R.complex.d m n) f = 0) (hg : CategoryStruct.comp (R.complex.d m n) g = 0) :
        R.extMk f m hm hf - R.extMk g m hm hg = R.extMk (f - g) m hm ⋯
        theorem CategoryTheory.ProjectiveResolution.neg_extMk {C : Type u} [Category.{v, u} C] [Abelian C] [HasExt C] {X Y : C} (R : ProjectiveResolution X) {n : ℕ} (f : R.complex.X n ⟶ Y) (m : ℕ) (hm : n + 1 = m) (hf : CategoryStruct.comp (R.complex.d m n) f = 0) :
        -R.extMk f m hm hf = R.extMk (-f) m hm ⋯
        @[simp]
        theorem CategoryTheory.ProjectiveResolution.extMk_zero {C : Type u} [Category.{v, u} C] [Abelian C] [HasExt C] {X Y : C} (R : ProjectiveResolution X) {n : ℕ} (m : ℕ) (hm : n + 1 = m) :
        R.extMk 0 m hm ⋯ = 0
        theorem CategoryTheory.ProjectiveResolution.smul_extMk {C : Type u} [Category.{v, u} C] [Abelian C] [HasExt C] {X Y : C} (R : ProjectiveResolution X) {R₀ : Type u_1} [Ring R₀] [Linear R₀ C] (r : R₀) {n : ℕ} (f : R.complex.X n ⟶ Y) (m : ℕ) (hm : n + 1 = m) (hf : CategoryStruct.comp (R.complex.d m n) f = 0) :
        r • R.extMk f m hm hf = R.extMk (r • f) m hm ⋯
        theorem CategoryTheory.ProjectiveResolution.extMk_eq_zero_iff {C : Type u} [Category.{v, u} C] [Abelian C] [HasExt C] {X Y : C} (R : ProjectiveResolution X) {n : ℕ} (f : R.complex.X n ⟶ Y) (m : ℕ) (hm : n + 1 = m) (hf : CategoryStruct.comp (R.complex.d m n) f = 0) (p : ℕ) (hp : p + 1 = n) :
        R.extMk f m hm hf = 0 ↔ ∃ (g : R.complex.X p ⟶ Y), CategoryStruct.comp (R.complex.d n p) g = f
        theorem CategoryTheory.ProjectiveResolution.extMk_surjective {C : Type u} [Category.{v, u} C] [Abelian C] [HasExt C] {X Y : C} (R : ProjectiveResolution X) {n : ℕ} (α : Abelian.Ext X Y n) (m : ℕ) (hm : n + 1 = m) :
        ∃ (f : R.complex.X n ⟶ Y) (hf : CategoryStruct.comp (R.complex.d m n) f = 0), R.extMk f m hm hf = α
        theorem CategoryTheory.ProjectiveResolution.extMk_comp_mk₀ {C : Type u} [Category.{v, u} C] [Abelian C] [HasExt C] {X Y : C} (R : ProjectiveResolution X) {n : ℕ} (f : R.complex.X n ⟶ Y) (m : ℕ) (hm : n + 1 = m) (hf : CategoryStruct.comp (R.complex.d m n) f = 0) {Y' : C} (g : Y ⟶ Y') :
        (R.extMk f m hm hf).comp (Abelian.Ext.mk₀ g) ⋯ = R.extMk (CategoryStruct.comp f g) m hm ⋯
        theorem CategoryTheory.ProjectiveResolution.mk₀_comp_extMk {C : Type u} [Category.{v, u} C] [Abelian C] [HasExt C] {X Y : C} {R : ProjectiveResolution X} {n : ℕ} (f : R.complex.X n ⟶ Y) (m : ℕ) (hm : n + 1 = m) (hf : CategoryStruct.comp (R.complex.d m n) f = 0) {X' : C} {R' : ProjectiveResolution X'} {g : X' ⟶ X} (φ : R'.Hom R g) :
        (Abelian.Ext.mk₀ g).comp (R.extMk f m hm hf) ⋯ = R'.extMk (CategoryStruct.comp (φ.hom.f n) f) m hm ⋯

        If R is a projective resolution of X in a R₀-linear category, then Ext X Y n identifies to the R₀-module of cohomology classes of degree n from R.cochainComplex to (singleFunctor C 0).obj Y.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem CategoryTheory.ProjectiveResolution.extLinearEquivCohomologyClass_symm_apply {C : Type u} [Category.{v, u} C] [Abelian C] [HasExt C] {X Y : C} (R : ProjectiveResolution X) {n : ℕ} {R₀ : Type u_1} [Ring R₀] [Linear R₀ C] (a✝ : CochainComplex.HomComplex.CohomologyClass R.cochainComplex ((CochainComplex.singleFunctor C 0).obj Y) ↑n) :
          R.extLinearEquivCohomologyClass.symm a✝ = { toFun := ⇑R.extAddEquivCohomologyClass.symm, map_add' := ⋯, map_smul' := ⋯, invFun := ⇑R.extAddEquivCohomologyClass, left_inv := ⋯, right_inv := ⋯ } a✝
          @[simp]
          theorem CategoryTheory.ProjectiveResolution.extLinearEquivCohomologyClass_apply {C : Type u} [Category.{v, u} C] [Abelian C] [HasExt C] {X Y : C} (R : ProjectiveResolution X) {n : ℕ} {R₀ : Type u_1} [Ring R₀] [Linear R₀ C] (a : Abelian.Ext X Y n) :
          R.extLinearEquivCohomologyClass a = ({ toFun := ⇑R.extAddEquivCohomologyClass.symm, map_add' := ⋯, map_smul' := ⋯ }.inverse ⇑{ toFun := ⇑R.extAddEquivCohomologyClass.symm, map_add' := ⋯, map_smul' := ⋯, invFun := ⇑R.extAddEquivCohomologyClass, left_inv := ⋯, right_inv := ⋯ }.symm ⋯ ⋯) a