Main result #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
When the underlying category is abelian:
-
category_theory.InjectiveResolution.desc
: GivenI : InjectiveResolution X
andJ : InjectiveResolution Y
, any morphismX ⟶ Y
admits a descent to a chain mapJ.cocomplex ⟶ I.cocomplex
. It is a descent in the sense thatI.ι
intertwines the descent and the original morphism, seecategory_theory.InjectiveResolution.desc_commutes
. -
category_theory.InjectiveResolution.desc_homotopy
: Any two such descents are homotopic. -
category_theory.InjectiveResolution.homotopy_equiv
: Any two injective resolutions of the same object are homotopy equivalent. -
category_theory.injective_resolutions
: If every object admits an injective resolution, we can construct a functorinjective_resolutions C : C ⥤ homotopy_category C
. -
category_theory.exact_f_d
:f
andinjective.d f
are exact. -
category_theory.InjectiveResolution.of
: Hence, starting from a monomorphismX ⟶ J
, whereJ
is injective, we can applyinjective.d
repeatedly to obtain an injective resolution ofX
.
Auxiliary construction for desc
.
Equations
- category_theory.InjectiveResolution.desc_f_zero f I J = category_theory.injective.factor_thru (f ≫ I.ι.f 0) (J.ι.f 0)
Auxiliary construction for desc
.
Equations
- category_theory.InjectiveResolution.desc_f_one f I J = category_theory.injective.exact.desc (category_theory.InjectiveResolution.desc_f_zero f I J ≫ I.cocomplex.d 0 1) (J.ι.f 0) (J.cocomplex.d 0 1) _ _
Auxiliary construction for desc
.
A morphism in C
descends to a chain map between injective resolutions.
Equations
- category_theory.InjectiveResolution.desc f I J = J.cocomplex.mk_hom I.cocomplex (category_theory.InjectiveResolution.desc_f_zero f I J) (category_theory.InjectiveResolution.desc_f_one f I J) _ (λ (n : ℕ) (_x : Σ' (f : J.cocomplex.X n ⟶ I.cocomplex.X n) (f' : J.cocomplex.X (n + 1) ⟶ I.cocomplex.X (n + 1)), f ≫ I.cocomplex.d n (n + 1) = J.cocomplex.d n (n + 1) ≫ f'), category_theory.InjectiveResolution.desc._match_1 I J n _x)
- category_theory.InjectiveResolution.desc._match_1 I J n ⟨g, ⟨g', w⟩⟩ = ⟨(I.desc_f_succ J n g g' _).fst, _⟩
The resolution maps intertwine the descent of a morphism and that morphism.
An auxiliary definition for desc_homotopy_zero
.
Equations
- category_theory.InjectiveResolution.desc_homotopy_zero_zero f comm = category_theory.injective.exact.desc (f.f 0) (I.ι.f 0) (I.cocomplex.d 0 1) category_theory.InjectiveResolution.desc_homotopy_zero_zero._proof_14 _
An auxiliary definition for desc_homotopy_zero
.
Equations
- category_theory.InjectiveResolution.desc_homotopy_zero_one f comm = category_theory.injective.exact.desc (f.f 1 - category_theory.InjectiveResolution.desc_homotopy_zero_zero f comm ≫ J.cocomplex.d 0 1) (I.cocomplex.d 0 1) (I.cocomplex.d 1 2) category_theory.InjectiveResolution.desc_homotopy_zero_one._proof_14 _
An auxiliary definition for desc_homotopy_zero
.
Any descent of the zero morphism is homotopic to zero.
Equations
- category_theory.InjectiveResolution.desc_homotopy_zero f comm = homotopy.mk_coinductive f (category_theory.InjectiveResolution.desc_homotopy_zero_zero f comm) _ (category_theory.InjectiveResolution.desc_homotopy_zero_one f comm) _ (λ (n : ℕ) (_x : Σ' (f_1 : I.cocomplex.X (n + 1) ⟶ J.cocomplex.X n) (f' : I.cocomplex.X (n + 2) ⟶ J.cocomplex.X (n + 1)), f.f (n + 1) = f_1 ≫ J.cocomplex.d n (n + 1) + I.cocomplex.d (n + 1) (n + 2) ≫ f'), category_theory.InjectiveResolution.desc_homotopy_zero._match_1 f n _x)
- category_theory.InjectiveResolution.desc_homotopy_zero._match_1 f n ⟨g, ⟨g', w⟩⟩ = ⟨category_theory.InjectiveResolution.desc_homotopy_zero_succ f n g g' _, _⟩
Two descents of the same morphism are homotopic.
Equations
- category_theory.InjectiveResolution.desc_homotopy f g h g_comm h_comm = homotopy.equiv_sub_zero.inv_fun (category_theory.InjectiveResolution.desc_homotopy_zero (g - h) _)
The descent of the identity morphism is homotopic to the identity cochain map.
Equations
The descent of a composition is homotopic to the composition of the descents.
Equations
Any two injective resolutions are homotopy equivalent.
Equations
- I.homotopy_equiv J = {hom := category_theory.InjectiveResolution.desc (𝟙 X) J I, inv := category_theory.InjectiveResolution.desc (𝟙 X) I J, homotopy_hom_inv_id := (category_theory.InjectiveResolution.desc_comp_homotopy (𝟙 X) (𝟙 X) I J I).symm.trans (_.mpr (_.mp (category_theory.InjectiveResolution.desc_id_homotopy X I))), homotopy_inv_hom_id := (category_theory.InjectiveResolution.desc_comp_homotopy (𝟙 X) (𝟙 X) J I J).symm.trans (_.mpr (_.mp (category_theory.InjectiveResolution.desc_id_homotopy X J)))}
An arbitrarily chosen injective resolution of an object.
The cochain map from cochain complex consisting of Z
supported in degree 0
back to the arbitrarily chosen injective resolution injective_resolution Z
.
The descent of a morphism to a cochain map between the arbitrarily chosen injective resolutions.
Taking injective resolutions is functorial,
if considered with target the homotopy category
(ℕ
-indexed cochain complexes and chain maps up to homotopy).
Equations
- category_theory.injective_resolutions C = {obj := λ (X : C), (homotopy_category.quotient C (complex_shape.up ℕ)).obj (category_theory.injective_resolution X), map := λ (X Y : C) (f : X ⟶ Y), (homotopy_category.quotient C (complex_shape.up ℕ)).map (category_theory.injective_resolution.desc f), map_id' := _, map_comp' := _}
Our goal is to define InjectiveResolution.of Z : InjectiveResolution Z
.
The 0
-th object in this resolution will just be injective.under Z
,
i.e. an arbitrarily chosen injective object with a map from Z
.
After that, we build the n+1
-st object as injective.syzygies
applied to the previously constructed morphism,
and the map from the n
-th object as injective.d
.
Auxiliary definition for InjectiveResolution.of
.
Equations
- category_theory.InjectiveResolution.of_cocomplex Z = cochain_complex.mk' (category_theory.injective.under Z) (category_theory.injective.syzygies (category_theory.injective.ι Z)) (category_theory.injective.d (category_theory.injective.ι Z)) (λ (_x : Σ (X₀ X₁ : C), X₀ ⟶ X₁), category_theory.InjectiveResolution.of_cocomplex._match_1 _x)
- category_theory.InjectiveResolution.of_cocomplex._match_1 ⟨X, ⟨Y, f⟩⟩ = ⟨category_theory.injective.syzygies f _, ⟨category_theory.injective.d f _, _⟩⟩
In any abelian category with enough injectives,
InjectiveResolution.of Z
constructs an injective resolution of the object Z
.
Equations
- category_theory.InjectiveResolution.of Z = {cocomplex := category_theory.InjectiveResolution.of_cocomplex Z, ι := ((cochain_complex.single₀ C).obj Z).mk_hom (category_theory.InjectiveResolution.of_cocomplex Z) (category_theory.injective.ι Z) 0 _ (λ (n : ℕ) (_x : Σ' (f : ((cochain_complex.single₀ C).obj Z).X n ⟶ (category_theory.InjectiveResolution.of_cocomplex Z).X n) (f' : ((cochain_complex.single₀ C).obj Z).X (n + 1) ⟶ (category_theory.InjectiveResolution.of_cocomplex Z).X (n + 1)), f ≫ (category_theory.InjectiveResolution.of_cocomplex Z).d n (n + 1) = ((cochain_complex.single₀ C).obj Z).d n (n + 1) ≫ f'), ⟨0, _⟩), injective := _, exact₀ := _, exact := _, mono := _}
If X
is a cochain complex of injective objects and we have a quasi-isomorphism
f : Y[0] ⟶ X
, then X
is an injective resolution of Y.