|
| 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