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.
TODO #
- Functoriality in
Yfor a given projective resolutionR - Functoriality in
X: this would involve a morphismX ⟶ X', projective resolutionsRandR'ofXandX', a lift ofX ⟶ X'as a morphism of cochain complexesR.complex ⟶ R'.complex; in this context, we should be able to compute the precomposition of an elementR.extMk f m hm hf : Ext X' Y nbyX ⟶ X'.
instance
CategoryTheory.ProjectiveResolution.instIsKProjectiveCochainComplex
{C : Type u}
[Category.{v, u} C]
[Abelian C]
{X : C}
(R : ProjectiveResolution X)
:
noncomputable def
CategoryTheory.ProjectiveResolution.extEquivCohomologyClass
{C : Type u}
[Category.{v, u} C]
[Abelian C]
[HasExt C]
{X Y : C}
(R : ProjectiveResolution X)
{n : ℕ}
:
Abelian.Ext X Y n ≃ CochainComplex.HomComplex.CohomologyClass R.cochainComplex ((CochainComplex.singleFunctor C 0).obj Y) ↑n
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
theorem
CategoryTheory.ProjectiveResolution.extEquivCohomologyClass_symm_mk_hom
{C : Type u}
[Category.{v, u} C]
[Abelian C]
[HasExt C]
{X Y : C}
(R : ProjectiveResolution X)
{n : ℕ}
[HasDerivedCategory C]
(x : CochainComplex.HomComplex.Cocycle R.cochainComplex ((CochainComplex.singleFunctor C 0).obj Y) ↑n)
:
@[simp]
theorem
CategoryTheory.ProjectiveResolution.extEquivCohomologyClass_symm_add
{C : Type u}
[Category.{v, u} C]
[Abelian C]
[HasExt C]
{X Y : C}
(R : ProjectiveResolution X)
{n : ℕ}
(x y : CochainComplex.HomComplex.CohomologyClass R.cochainComplex ((CochainComplex.singleFunctor C 0).obj Y) ↑n)
:
R.extEquivCohomologyClass.symm (x + y) = R.extEquivCohomologyClass.symm x + R.extEquivCohomologyClass.symm y
noncomputable def
CategoryTheory.ProjectiveResolution.extAddEquivCohomologyClass
{C : Type u}
[Category.{v, u} C]
[Abelian C]
[HasExt C]
{X Y : C}
(R : ProjectiveResolution X)
{n : ℕ}
:
Abelian.Ext X Y n ≃+ CochainComplex.HomComplex.CohomologyClass R.cochainComplex ((CochainComplex.singleFunctor C 0).obj Y) ↑n
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 X.
Equations
- R.extAddEquivCohomologyClass = (let __Equiv := R.extEquivCohomologyClass.symm; { toEquiv := __Equiv, map_add' := ⋯ }).symm
Instances For
@[simp]
theorem
CategoryTheory.ProjectiveResolution.extAddEquivCohomologyClass_apply
{C : Type u}
[Category.{v, u} C]
[Abelian C]
[HasExt C]
{X Y : C}
(R : ProjectiveResolution X)
{n : ℕ}
(a✝ : Abelian.Ext X Y n)
:
@[simp]
theorem
CategoryTheory.ProjectiveResolution.extAddEquivCohomologyClass_symm_apply
{C : Type u}
[Category.{v, u} C]
[Abelian C]
[HasExt C]
{X Y : C}
(R : ProjectiveResolution X)
{n : ℕ}
(a✝ : CochainComplex.HomComplex.CohomologyClass R.cochainComplex ((CochainComplex.singleFunctor C 0).obj Y) ↑n)
:
@[simp]
theorem
CategoryTheory.ProjectiveResolution.extEquivCohomologyClass_symm_sub
{C : Type u}
[Category.{v, u} C]
[Abelian C]
[HasExt C]
{X Y : C}
(R : ProjectiveResolution X)
{n : ℕ}
(x y : CochainComplex.HomComplex.CohomologyClass R.cochainComplex ((CochainComplex.singleFunctor C 0).obj Y) ↑n)
:
R.extEquivCohomologyClass.symm (x - y) = R.extEquivCohomologyClass.symm x - R.extEquivCohomologyClass.symm y
@[simp]
theorem
CategoryTheory.ProjectiveResolution.extEquivCohomologyClass_symm_neg
{C : Type u}
[Category.{v, u} C]
[Abelian C]
[HasExt C]
{X Y : C}
(R : ProjectiveResolution X)
{n : ℕ}
(x : CochainComplex.HomComplex.CohomologyClass R.cochainComplex ((CochainComplex.singleFunctor C 0).obj Y) ↑n)
:
@[simp]
theorem
CategoryTheory.ProjectiveResolution.extEquivCohomologyClass_symm_zero
{C : Type u}
[Category.{v, u} C]
[Abelian C]
[HasExt C]
{X Y : C}
(R : ProjectiveResolution X)
{n : ℕ}
:
@[simp]
theorem
CategoryTheory.ProjectiveResolution.extEquivCohomologyClass_add
{C : Type u}
[Category.{v, u} C]
[Abelian C]
[HasExt C]
{X Y : C}
(R : ProjectiveResolution X)
{n : ℕ}
(x y : Abelian.Ext X Y n)
:
@[simp]
theorem
CategoryTheory.ProjectiveResolution.extEquivCohomologyClass_sub
{C : Type u}
[Category.{v, u} C]
[Abelian C]
[HasExt C]
{X Y : C}
(R : ProjectiveResolution X)
{n : ℕ}
(x y : Abelian.Ext X Y n)
:
@[simp]
theorem
CategoryTheory.ProjectiveResolution.extEquivCohomologyClass_neg
{C : Type u}
[Category.{v, u} C]
[Abelian C]
[HasExt C]
{X Y : C}
(R : ProjectiveResolution X)
{n : ℕ}
(x : Abelian.Ext X Y n)
:
@[simp]
theorem
CategoryTheory.ProjectiveResolution.extEquivCohomologyClass_zero
{C : Type u}
[Category.{v, u} C]
[Abelian C]
[HasExt C]
(X : C)
{Y : C}
(R : ProjectiveResolution X)
(n : ℕ)
:
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)
:
Abelian.Ext X Y n
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
@[simp]
theorem
CategoryTheory.ProjectiveResolution.extEquivCohomologyClass_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.extEquivCohomologyClass (R.extMk f m hm hf) = CochainComplex.HomComplex.CohomologyClass.mk
(CochainComplex.HomComplex.Cocycle.toSingleMk (CategoryStruct.comp (R.cochainComplexXIso (-↑n) n ⋯).hom f) ⋯ (-↑m) ⋯
⋯)
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)
:
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)
:
@[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)
:
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)
:
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)
: