Skip to content

Commit f62eba1

Browse files
committed
feat(Algebra/Homology): DerivedCategory and SmallShiftedHom (leanprover-community#32728)
Given two cochain complexes `K` and `L`, We define a map from the cohomology of `HomComplex K L` to the type `SmallShiftedHom` (which identifies to a type of morphisms in the derived category).
1 parent 6596905 commit f62eba1

3 files changed

Lines changed: 67 additions & 0 deletions

File tree

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -554,6 +554,7 @@ public import Mathlib.Algebra.Homology.DerivedCategory.KInjective
554554
public import Mathlib.Algebra.Homology.DerivedCategory.Linear
555555
public import Mathlib.Algebra.Homology.DerivedCategory.ShortExact
556556
public import Mathlib.Algebra.Homology.DerivedCategory.SingleTriangle
557+
public import Mathlib.Algebra.Homology.DerivedCategory.SmallShiftedHom
557558
public import Mathlib.Algebra.Homology.DerivedCategory.TStructure
558559
public import Mathlib.Algebra.Homology.DifferentialObject
559560
public import Mathlib.Algebra.Homology.Double

Mathlib/Algebra/Homology/DerivedCategory/Basic.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,4 +255,8 @@ lemma isIso_Q_map_iff_quasiIso {K L : CochainComplex C ℤ} (φ : K ⟶ L) :
255255
IsIso (Q.map φ) ↔ QuasiIso φ := by
256256
apply HomologicalComplexUpToQuasiIso.isIso_Q_map_iff_mem_quasiIso
257257

258+
lemma Q_map_eq_of_homotopy {K L : CochainComplex C ℤ} {f g : K ⟶ L} (h : Homotopy f g) :
259+
DerivedCategory.Q.map f = DerivedCategory.Q.map g :=
260+
HomologicalComplexUpToQuasiIso.Q_map_eq_of_homotopy h
261+
258262
end DerivedCategory
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/-
2+
Copyright (c) 2025 Joël Riou. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Joël Riou
5+
-/
6+
module
7+
8+
public import Mathlib.Algebra.Homology.DerivedCategory.Basic
9+
public import Mathlib.Algebra.Homology.HomotopyCategory.HomComplexCohomology
10+
public import Mathlib.CategoryTheory.Localization.SmallShiftedHom
11+
12+
/-!
13+
# Cohomology of `HomComplex` and morphisms in the derived category
14+
15+
Let `K` and `L` be two cochain complexes in an abelian category `C`.
16+
Given a class `x : HomComplex.CohomologyClass K L n`, we construct an
17+
element in the type
18+
`SmallShiftedHom (HomologicalComplex.quasiIso C (.up ℤ)) K L n`, and
19+
compute its image as a morphism `Q.obj K ⟶ (Q.obj L)⟦n⟧` in the
20+
derived category when `x` is given as the class of a cocycle.
21+
22+
-/
23+
24+
@[expose] public section
25+
26+
universe w v u
27+
28+
open CategoryTheory Localization
29+
30+
namespace CochainComplex.HomComplex.CohomologyClass
31+
32+
variable {C : Type u} [Category.{v} C] [Abelian C]
33+
{K L : CochainComplex C ℤ} {n : ℤ}
34+
[HasSmallLocalizedShiftedHom.{w} (HomologicalComplex.quasiIso C (.up ℤ)) ℤ K L]
35+
36+
/-- Given `x : CohomologyClass K L n`, this is the element in the type
37+
`SmallShiftedHom` relatively to quasi-isomorphisms that is associated
38+
to the `x`. -/
39+
noncomputable def toSmallShiftedHom (x : CohomologyClass K L n) :
40+
SmallShiftedHom.{w} (HomologicalComplex.quasiIso C (.up ℤ)) K L n :=
41+
Quotient.lift (fun y ↦ SmallShiftedHom.mk _ (Cocycle.equivHomShift.symm y)) (by
42+
letI := HasDerivedCategory.standard C
43+
intro y₁ y₂ h
44+
refine (SmallShiftedHom.equiv _ DerivedCategory.Q).injective ?_
45+
simp only [SmallShiftedHom.equiv_mk, ShiftedHom.map]
46+
rw [cancel_mono, DerivedCategory.Q_map_eq_of_homotopy]
47+
apply HomotopyCategory.homotopyOfEq
48+
rw [← toHom_mk, ← toHom_mk]
49+
congr 1
50+
exact Quotient.sound h) x
51+
52+
lemma toSmallShiftedHom_mk (x : Cocycle K L n) :
53+
(mk x).toSmallShiftedHom =
54+
SmallShiftedHom.mk _ (Cocycle.equivHomShift.symm x) := rfl
55+
56+
@[simp]
57+
lemma equiv_toSmallShiftedHom_mk [HasDerivedCategory C] (x : Cocycle K L n) :
58+
SmallShiftedHom.equiv _ DerivedCategory.Q (mk x).toSmallShiftedHom =
59+
ShiftedHom.map (Cocycle.equivHomShift.symm x) DerivedCategory.Q := by
60+
simp [toSmallShiftedHom_mk]
61+
62+
end CochainComplex.HomComplex.CohomologyClass

0 commit comments

Comments
 (0)