Skip to content

Commit 98be3dc

Browse files
committed
feat(Algebra/Homology): compatibilities for homology functors (#35938)
We add compatibility lemmas for the comparison of the homology functors on the categories of cochain complexes, the homotopy category or the derived category.
1 parent b1fce7d commit 98be3dc

File tree

3 files changed

+75
-1
lines changed

3 files changed

+75
-1
lines changed

Mathlib/Algebra/Homology/DerivedCategory/HomologySequence.lean

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Authors: Joël Riou
66
module
77

88
public import Mathlib.Algebra.Homology.DerivedCategory.Basic
9+
public import Mathlib.CategoryTheory.Shift.ShiftedHom
910

1011
/-!
1112
# The homology sequence
@@ -39,12 +40,36 @@ noncomputable def homologyFunctorFactors (n : ℤ) : Q ⋙ homologyFunctor C n
3940
HomologicalComplex.homologyFunctor _ _ n :=
4041
HomologicalComplexUpToQuasiIso.homologyFunctorFactors C (ComplexShape.up ℤ) n
4142

43+
variable {C} in
44+
@[reassoc (attr := simp)]
45+
lemma homologyFunctorFactors_hom_naturality
46+
{K L : CochainComplex C ℤ} (f : K ⟶ L) (n : ℤ) :
47+
(homologyFunctor C n).map (Q.map f) ≫ (homologyFunctorFactors C n).hom.app L =
48+
(homologyFunctorFactors C n).hom.app K ≫ HomologicalComplex.homologyMap f n :=
49+
(homologyFunctorFactors C n).hom.naturality f
50+
4251
/-- The homology functor on the derived category is induced by the homology
4352
functor on the homotopy category of cochain complexes. -/
4453
noncomputable def homologyFunctorFactorsh (n : ℤ) : Qh ⋙ homologyFunctor C n ≅
4554
HomotopyCategory.homologyFunctor _ _ n :=
4655
HomologicalComplexUpToQuasiIso.homologyFunctorFactorsh C (ComplexShape.up ℤ) n
4756

57+
@[reassoc]
58+
lemma homologyFunctorFactorsh_hom_app_quotient_obj (K : CochainComplex C ℤ) (n : ℤ) :
59+
(homologyFunctorFactorsh C n).hom.app ((HomotopyCategory.quotient _ _).obj K) =
60+
(homologyFunctor C n).map ((quotientCompQhIso C).hom.app K) ≫
61+
(homologyFunctorFactors C n).hom.app K ≫
62+
(HomotopyCategory.homologyFunctorFactors C (.up ℤ) n).inv.app _ :=
63+
HomologicalComplexUpToQuasiIso.homologyFunctorFactorsh_hom_app_quotient_obj ..
64+
65+
@[reassoc]
66+
lemma homologyFunctorFactorsh_inv_app_quotient_obj (K : CochainComplex C ℤ) (n : ℤ) :
67+
(homologyFunctorFactorsh C n).inv.app ((HomotopyCategory.quotient _ _).obj K) =
68+
(HomotopyCategory.homologyFunctorFactors C (.up ℤ) n).hom.app _ ≫
69+
(homologyFunctorFactors C n).inv.app K ≫
70+
(homologyFunctor C n).map ((quotientCompQhIso C).inv.app K) :=
71+
HomologicalComplexUpToQuasiIso.homologyFunctorFactorsh_inv_app_quotient_obj ..
72+
4873
variable {C} in
4974
lemma isIso_Qh_map_iff {X Y : HomotopyCategory C (ComplexShape.up ℤ)} (f : X ⟶ Y) :
5075
IsIso (Qh.map f) ↔ HomotopyCategory.quasiIso C _ f := by
@@ -67,8 +92,38 @@ noncomputable instance : (homologyFunctor C 0).ShiftSequence ℤ :=
6792
Functor.ShiftSequence.induced (homologyFunctorFactorsh C 0) ℤ
6893
(homologyFunctor C) (homologyFunctorFactorsh C)
6994

95+
lemma shift_homologyFunctor (n : ℤ) :
96+
(homologyFunctor C 0).shift n = homologyFunctor C n := rfl
97+
7098
variable {C}
7199

100+
@[reassoc]
101+
lemma shiftMap_homologyFunctor_map_Qh
102+
{K L : HomotopyCategory C (.up ℤ)} {n : ℤ} (f : K ⟶ L⟦n⟧)
103+
(a a' : ℤ) (h : n + a = a') :
104+
(homologyFunctor C 0).shiftMap (ShiftedHom.map f Qh) a a' h =
105+
(homologyFunctorFactorsh C a).hom.app _ ≫
106+
(HomotopyCategory.homologyFunctor C (.up ℤ) 0).shiftMap f a a' h ≫
107+
(homologyFunctorFactorsh C a').inv.app _ :=
108+
Functor.ShiftSequence.induced_shiftMap ..
109+
110+
@[reassoc]
111+
lemma shiftMap_homologyFunctor_map_Q
112+
{K L : CochainComplex C ℤ} {n : ℤ} (f : K ⟶ L⟦n⟧)
113+
(a a' : ℤ) (h : n + a = a') :
114+
(homologyFunctor C 0).shiftMap (ShiftedHom.map f Q) a a' h =
115+
(homologyFunctorFactors C a).hom.app _ ≫
116+
(HomologicalComplex.homologyFunctor C (.up ℤ) 0).shiftMap f a a' h ≫
117+
(homologyFunctorFactors C a').inv.app _ := by
118+
rw [← ShiftedHom.map_naturality_1 f (quotientCompQhIso C),
119+
ShiftedHom.mk₀_comp, ShiftedHom.comp_mk₀,
120+
Functor.shiftMap_comp', Functor.shiftMap_comp,
121+
ShiftedHom.comp_map, shiftMap_homologyFunctor_map_Qh,
122+
homologyFunctorFactorsh_hom_app_quotient_obj,
123+
homologyFunctorFactorsh_inv_app_quotient_obj,
124+
HomotopyCategory.homologyFunctor_shiftMap]
125+
simp [shift_homologyFunctor, ← Functor.map_comp, ← Functor.map_comp_assoc]
126+
72127
namespace HomologySequence
73128

74129
/-- The connecting homomorphism on the homology sequence attached to a distinguished

Mathlib/Algebra/Homology/HomotopyCategory/ShiftSequence.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ module
77

88
public import Mathlib.CategoryTheory.Shift.InducedShiftSequence
99
public import Mathlib.CategoryTheory.Shift.Localization
10+
public import Mathlib.CategoryTheory.Shift.ShiftedHom
1011
public import Mathlib.Algebra.Homology.HomotopyCategory.Shift
1112
public import Mathlib.Algebra.Homology.ShortComplex.HomologicalComplex
1213
public import Mathlib.Algebra.Homology.QuasiIso
@@ -203,7 +204,7 @@ lemma homologyShiftIso_hom_app (n a a' : ℤ) (ha' : n + a = a') (K : CochainCom
203204
lemma homologyFunctor_shiftMap
204205
{K L : CochainComplex C ℤ} {n : ℤ} (f : K ⟶ L⟦n⟧) (a a' : ℤ) (h : n + a = a') :
205206
(homologyFunctor C (ComplexShape.up ℤ) 0).shiftMap
206-
((quotient _ _).map f ≫ ((quotient _ _).commShiftIso n).hom.app _) a a' h =
207+
(ShiftedHom.map f (quotient _ _)) a a' h =
207208
(homologyFunctorFactors _ _ a).hom.app K ≫
208209
(HomologicalComplex.homologyFunctor C (ComplexShape.up ℤ) 0).shiftMap f a a' h ≫
209210
(homologyFunctorFactors _ _ a').inv.app L := by

Mathlib/Algebra/Homology/Localization.lean

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,24 @@ noncomputable def homologyFunctorFactorsh (i : ι) :
191191
Functor.isoWhiskerRight (quotientCompQhIso C c) _ ≪≫
192192
homologyFunctorFactors C c i ≪≫ (HomotopyCategory.homologyFunctorFactors C c i).symm)
193193

194+
@[reassoc]
195+
lemma homologyFunctorFactorsh_hom_app_quotient_obj
196+
(K : HomologicalComplex C c) (i : ι) :
197+
(homologyFunctorFactorsh C c i).hom.app ((HomotopyCategory.quotient _ _).obj K) =
198+
(homologyFunctor C c i).map ((quotientCompQhIso C c).hom.app K) ≫
199+
(homologyFunctorFactors C c i).hom.app K ≫
200+
(HomotopyCategory.homologyFunctorFactors C c i).inv.app K :=
201+
(Quotient.natTransLift_app ..).trans (by simp)
202+
203+
@[reassoc]
204+
lemma homologyFunctorFactorsh_inv_app_quotient_obj
205+
(K : HomologicalComplex C c) (i : ι) :
206+
(homologyFunctorFactorsh C c i).inv.app ((HomotopyCategory.quotient _ _).obj K) =
207+
(HomotopyCategory.homologyFunctorFactors C c i).hom.app K ≫
208+
(homologyFunctorFactors C c i).inv.app K ≫
209+
(homologyFunctor C c i).map ((quotientCompQhIso C c).inv.app K) :=
210+
(Quotient.natTransLift_app ..).trans (by simp)
211+
194212
section
195213

196214
variable [(HomotopyCategory.quotient C c).IsLocalization

0 commit comments

Comments
 (0)