File: Mathlib/Algebra/Homology/Localization.lean

full_name: HomologicalComplexUpToQuasiIso
code: /-- The category of homological complexes up to quasi-isomorphisms. -/
abbrev HomologicalComplexUpToQuasiIso 
goal: Type (max (max u_1 u_2) u_3)

full_name: HomologicalComplexUpToQuasiIso.Q
code: /-- The localization functor `HomologicalComplex C c ⥤ HomologicalComplexUpToQuasiIso C c`. -/
abbrev HomologicalComplexUpToQuasiIso.Q :
    HomologicalComplex C c ⥤ HomologicalComplexUpToQuasiIso C c 
goal: HomologicalComplex C c ⥤ HomologicalComplexUpToQuasiIso C c

full_name: HomologicalComplex.homologyFunctor_inverts_quasiIso
code: lemma HomologicalComplex.homologyFunctor_inverts_quasiIso (i : ι) :
    (quasiIso C c).IsInvertedBy (homologyFunctor C c i) 
goal: (HomologicalComplex.quasiIso C c).IsInvertedBy (HomologicalComplex.homologyFunctor C c i)

full_name: HomologicalComplexUpToQuasiIso.homologyFunctor
code: /-- The homology functor `HomologicalComplexUpToQuasiIso C c ⥤ C` for each `i : ι`. -/
noncomputable def homologyFunctor (i : ι) : HomologicalComplexUpToQuasiIso C c ⥤ C 
goal: HomologicalComplexUpToQuasiIso C c ⥤ C

full_name: HomologicalComplexUpToQuasiIso.homologyFunctorFactors
code: /-- The homology functor on `HomologicalComplexUpToQuasiIso C c` is induced by
the homology functor on `HomologicalComplex C c`. -/
noncomputable def homologyFunctorFactors (i : ι) :
    Q ⋙ homologyFunctor C c i ≅ HomologicalComplex.homologyFunctor C c i 
goal: HomologicalComplexUpToQuasiIso.Q ⋙ HomologicalComplexUpToQuasiIso.homologyFunctor C c i ≅
  HomologicalComplex.homologyFunctor C c i

full_name: HomologicalComplexUpToQuasiIso.isIso_Q_map_iff_mem_quasiIso
code: lemma isIso_Q_map_iff_mem_quasiIso {K L : HomologicalComplex C c} (f : K ⟶ L) :
    IsIso (Q.map f) ↔ HomologicalComplex.quasiIso C c f 
goal: CategoryTheory.IsIso (HomologicalComplexUpToQuasiIso.Q.map f) ↔ HomologicalComplex.quasiIso C c f

full_name: HomologicalComplexUpToQuasiIso.Q_inverts_homotopyEquivalences
code: lemma HomologicalComplexUpToQuasiIso.Q_inverts_homotopyEquivalences :
    (HomologicalComplex.homotopyEquivalences C c).IsInvertedBy
      HomologicalComplexUpToQuasiIso.Q 
goal: (HomologicalComplex.homotopyEquivalences C c).IsInvertedBy HomologicalComplexUpToQuasiIso.Q

full_name: HomotopyCategory.quasiIso
code: /-- The class of quasi-isomorphisms in the homotopy category. -/
def quasiIso : MorphismProperty (HomotopyCategory C c) 
goal: CategoryTheory.MorphismProperty (HomotopyCategory C c)

full_name: HomotopyCategory.mem_quasiIso_iff
code: lemma mem_quasiIso_iff {X Y : HomotopyCategory C c} (f : X ⟶ Y) :
    quasiIso C c f ↔ ∀ (n : ι), IsIso ((homologyFunctor _ _ n).map f) 
goal: HomotopyCategory.quasiIso C c f ↔ ∀ (n : ι), CategoryTheory.IsIso ((HomotopyCategory.homologyFunctor C c n).map f)

full_name: HomotopyCategory.quotient_map_mem_quasiIso_iff
code: lemma quotient_map_mem_quasiIso_iff {K L : HomologicalComplex C c} (f : K ⟶ L) :
    quasiIso C c ((quotient C c).map f) ↔ HomologicalComplex.quasiIso C c f 
goal: HomotopyCategory.quasiIso C c ((HomotopyCategory.quotient C c).map f) ↔ HomologicalComplex.quasiIso C c f

full_name: HomotopyCategory.respectsIso_quasiIso
code: instance respectsIso_quasiIso : (quasiIso C c).RespectsIso 
goal: (HomotopyCategory.quasiIso C c).RespectsIso

full_name: HomotopyCategory.homologyFunctor_inverts_quasiIso
code: lemma homologyFunctor_inverts_quasiIso (i : ι) :
    (quasiIso C c).IsInvertedBy (homologyFunctor C c i) 
goal: (HomotopyCategory.quasiIso C c).IsInvertedBy (HomotopyCategory.homologyFunctor C c i)

full_name: HomotopyCategory.quasiIso_eq_quasiIso_map_quotient
code: lemma quasiIso_eq_quasiIso_map_quotient :
    quasiIso C c = (HomologicalComplex.quasiIso C c).map (quotient C c) 
goal: HomotopyCategory.quasiIso C c = (HomologicalComplex.quasiIso C c).map (HomotopyCategory.quotient C c)

full_name: ComplexShape.QFactorsThroughHomotopy.areEqualizedByLocalization
code: /-- The condition on a complex shape `c` saying that homotopic maps become equal in
the localized category with respect to quasi-isomorphisms. -/
class ComplexShape.QFactorsThroughHomotopy {ι : Type*} (c : ComplexShape ι)
    (C : Type*) [Category C] [Preadditive C]
    [CategoryWithHomology C] : Prop where
  areEqualizedByLocalization {K L : HomologicalComplex C c} {f g : K ⟶ L} (h : Homotopy f g) :
    AreEqualizedByLocalization (HomologicalComplex.quasiIso C c) f g
goal: CategoryTheory.AreEqualizedByLocalization (HomologicalComplex.quasiIso C c) f g

full_name: ComplexShape.QFactorsThroughHomotopy
code: /-- The condition on a complex shape `c` saying that homotopic maps become equal in
the localized category with respect to quasi-isomorphisms. -/
class ComplexShape.QFactorsThroughHomotopy {ι : Type*} (c : ComplexShape ι)
    (C : Type*) [Category C] [Preadditive C]
    [CategoryWithHomology C] : Prop where
  areEqualizedByLocalization {K L : HomologicalComplex C c} {f g : K ⟶ L} (h : Homotopy f g) :
    AreEqualizedByLocalization (HomologicalComplex.quasiIso C c) f g
goal: Prop

full_name: HomologicalComplexUpToQuasiIso.Q_map_eq_of_homotopy
code: lemma Q_map_eq_of_homotopy {K L : HomologicalComplex C c} {f g : K ⟶ L} (h : Homotopy f g) :
    Q.map f = Q.map g 
goal: HomologicalComplexUpToQuasiIso.Q.map f = HomologicalComplexUpToQuasiIso.Q.map g

full_name: HomologicalComplexUpToQuasiIso.Qh
code: /-- The functor `HomotopyCategory C c ⥤ HomologicalComplexUpToQuasiIso C c` from the homotopy
category to the localized category with respect to quasi-isomorphisms. -/
def Qh : HomotopyCategory C c ⥤ HomologicalComplexUpToQuasiIso C c 
goal: HomotopyCategory C c ⥤ HomologicalComplexUpToQuasiIso C c

full_name: HomologicalComplexUpToQuasiIso.quotientCompQhIso
code: /-- The canonical isomorphism `HomotopyCategory.quotient C c ⋙ Qh ≅ Q`. -/
def quotientCompQhIso : HomotopyCategory.quotient C c ⋙ Qh ≅ Q 
goal: HomotopyCategory.quotient C c ⋙ HomologicalComplexUpToQuasiIso.Qh ≅ HomologicalComplexUpToQuasiIso.Q

full_name: HomologicalComplexUpToQuasiIso.Qh_inverts_quasiIso
code: lemma Qh_inverts_quasiIso : (HomotopyCategory.quasiIso C c).IsInvertedBy Qh 
goal: (HomotopyCategory.quasiIso C c).IsInvertedBy HomologicalComplexUpToQuasiIso.Qh

full_name: HomologicalComplexUpToQuasiIso.instIsLocalizationHomologicalComplexCompHomotopyCategoryQuotientQhQuasiIso
code: instance : (HomotopyCategory.quotient C c ⋙ Qh).IsLocalization
    (HomologicalComplex.quasiIso C c) 
goal: (HomotopyCategory.quotient C c ⋙ HomologicalComplexUpToQuasiIso.Qh).IsLocalization (HomologicalComplex.quasiIso C c)

full_name: HomologicalComplexUpToQuasiIso.homologyFunctorFactorsh
code: /-- The homology functor on `HomologicalComplexUpToQuasiIso C c` is induced by
the homology functor on `HomotopyCategory C c`. -/
noncomputable def homologyFunctorFactorsh (i : ι ) :
    Qh ⋙ homologyFunctor C c i ≅ HomotopyCategory.homologyFunctor C c i 
goal: HomologicalComplexUpToQuasiIso.Qh ⋙ HomologicalComplexUpToQuasiIso.homologyFunctor C c i ≅
  HomotopyCategory.homologyFunctor C c i

full_name: HomologicalComplexUpToQuasiIso.instIsLocalizationHomotopyCategoryQhQuasiIso
code: /-- The category `HomologicalComplexUpToQuasiIso C c` which was defined as a localization of
`HomologicalComplex C c` with respect to quasi-isomorphisms also identify to a localization
of the homotopy category with respect ot quasi-isomorphisms. -/
instance : HomologicalComplexUpToQuasiIso.Qh.IsLocalization (HomotopyCategory.quasiIso C c) 
goal: HomologicalComplexUpToQuasiIso.Qh.IsLocalization (HomotopyCategory.quasiIso C c)

full_name: ComplexShape.strictUniversalPropertyFixedTargetQuotient
code: /-- The homotopy category satisfies the universal property of the localized category
with respect to homotopy equivalences. -/
def ComplexShape.strictUniversalPropertyFixedTargetQuotient (E : Type*) [Category E] :
    Localization.StrictUniversalPropertyFixedTarget (HomotopyCategory.quotient C c)
      (HomologicalComplex.homotopyEquivalences C c) E 
goal: CategoryTheory.Localization.StrictUniversalPropertyFixedTarget (HomotopyCategory.quotient C c)
  (HomologicalComplex.homotopyEquivalences C c) E

full_name: ComplexShape.quotient_isLocalization
code: lemma ComplexShape.quotient_isLocalization :
    (HomotopyCategory.quotient C c).IsLocalization
      (HomologicalComplex.homotopyEquivalences _ _) 
goal: (HomotopyCategory.quotient C c).IsLocalization (HomologicalComplex.homotopyEquivalences C c)

full_name: ComplexShape.QFactorsThroughHomotopy_of_exists_prev
code: lemma ComplexShape.QFactorsThroughHomotopy_of_exists_prev [CategoryWithHomology C] :
    c.QFactorsThroughHomotopy C 
goal: c.QFactorsThroughHomotopy C

full_name: instIsLocalizationHomologicalComplexDownHomotopyCategoryQuotientHomotopyEquivalences
code: instance : (HomotopyCategory.quotient C (ComplexShape.down ι)).IsLocalization
    (HomologicalComplex.homotopyEquivalences _ _) 
goal: (HomotopyCategory.quotient C (ComplexShape.down ι)).IsLocalization
  (HomologicalComplex.homotopyEquivalences C (ComplexShape.down ι))

full_name: instQFactorsThroughHomotopyDown
code: instance : (ComplexShape.down ι).QFactorsThroughHomotopy C 
goal: (ComplexShape.down ι).QFactorsThroughHomotopy C

full_name: instIsLocalizationHomologicalComplexIntUpHomotopyCategoryQuotientHomotopyEquivalences
code: instance : (HomotopyCategory.quotient C (ComplexShape.up ℤ)).IsLocalization
    (HomologicalComplex.homotopyEquivalences _ _) 
goal: (HomotopyCategory.quotient C (ComplexShape.up ℤ)).IsLocalization
  (HomologicalComplex.homotopyEquivalences C (ComplexShape.up ℤ))

full_name: instQFactorsThroughHomotopyIntUp
code: instance : (ComplexShape.up ℤ).QFactorsThroughHomotopy C 
goal: (ComplexShape.up ℤ).QFactorsThroughHomotopy C

full_name: CategoryTheory.Functor.mapHomologicalComplexUpToQuasiIsoLocalizerMorphism_functor
code: /-- The localizer morphism which expresses that `F.mapHomologicalComplex c` preserves
quasi-isomorphisms. -/
@[simps]
def mapHomologicalComplexUpToQuasiIsoLocalizerMorphism :
    LocalizerMorphism (HomologicalComplex.quasiIso C c) (HomologicalComplex.quasiIso D c) 
goal: (F.mapHomologicalComplexUpToQuasiIsoLocalizerMorphism c).functor = F.mapHomologicalComplex c

full_name: CategoryTheory.Functor.mapHomologicalComplexUpToQuasiIsoLocalizerMorphism
code: /-- The localizer morphism which expresses that `F.mapHomologicalComplex c` preserves
quasi-isomorphisms. -/
@[simps]
def mapHomologicalComplexUpToQuasiIsoLocalizerMorphism :
    LocalizerMorphism (HomologicalComplex.quasiIso C c) (HomologicalComplex.quasiIso D c) 
goal: CategoryTheory.LocalizerMorphism (HomologicalComplex.quasiIso C c) (HomologicalComplex.quasiIso D c)

full_name: CategoryTheory.Functor.mapHomologicalComplex_upToQuasiIso_Q_inverts_quasiIso
code: lemma mapHomologicalComplex_upToQuasiIso_Q_inverts_quasiIso :
    (HomologicalComplex.quasiIso C c).IsInvertedBy
      (F.mapHomologicalComplex c ⋙ HomologicalComplexUpToQuasiIso.Q) 
goal: (HomologicalComplex.quasiIso C c).IsInvertedBy (F.mapHomologicalComplex c ⋙ HomologicalComplexUpToQuasiIso.Q)

full_name: CategoryTheory.Functor.mapHomologicalComplexUpToQuasiIso
code: /-- The functor `HomologicalComplexUpToQuasiIso C c ⥤ HomologicalComplexUpToQuasiIso D c`
induced by a functor `F : C ⥤ D` which preserves homology. -/
noncomputable def mapHomologicalComplexUpToQuasiIso :
    HomologicalComplexUpToQuasiIso C c ⥤ HomologicalComplexUpToQuasiIso D c 
goal: HomologicalComplexUpToQuasiIso C c ⥤ HomologicalComplexUpToQuasiIso D c

full_name: CategoryTheory.Functor.instLiftingHomologicalComplexHomologicalComplexUpToQuasiIsoQQuasiIsoCompMapHomologicalComplexMapHomologicalComplexUpToQuasiIso
code: noncomputable instance :
    Localization.Lifting HomologicalComplexUpToQuasiIso.Q
      (HomologicalComplex.quasiIso C c)
      (F.mapHomologicalComplex c ⋙ HomologicalComplexUpToQuasiIso.Q)
      (F.mapHomologicalComplexUpToQuasiIso c) 
goal: CategoryTheory.Localization.Lifting HomologicalComplexUpToQuasiIso.Q (HomologicalComplex.quasiIso C c)
  (F.mapHomologicalComplex c ⋙ HomologicalComplexUpToQuasiIso.Q) (F.mapHomologicalComplexUpToQuasiIso c)

full_name: CategoryTheory.Functor.mapHomologicalComplexUpToQuasiIsoFactors
code: /-- The functor `F.mapHomologicalComplexUpToQuasiIso c` is induced by
`F.mapHomologicalComplex c`. -/
noncomputable def mapHomologicalComplexUpToQuasiIsoFactors :
    HomologicalComplexUpToQuasiIso.Q ⋙ F.mapHomologicalComplexUpToQuasiIso c ≅
      F.mapHomologicalComplex c ⋙ HomologicalComplexUpToQuasiIso.Q 
goal: HomologicalComplexUpToQuasiIso.Q ⋙ F.mapHomologicalComplexUpToQuasiIso c ≅
  F.mapHomologicalComplex c ⋙ HomologicalComplexUpToQuasiIso.Q

full_name: CategoryTheory.Functor.mapHomologicalComplexUpToQuasiIsoFactorsh
code: /-- The functor `F.mapHomologicalComplexUpToQuasiIso c` is induced by
`F.mapHomotopyCategory c`. -/
noncomputable def mapHomologicalComplexUpToQuasiIsoFactorsh :
    HomologicalComplexUpToQuasiIso.Qh ⋙ F.mapHomologicalComplexUpToQuasiIso c ≅
      F.mapHomotopyCategory c ⋙ HomologicalComplexUpToQuasiIso.Qh 
goal: HomologicalComplexUpToQuasiIso.Qh ⋙ F.mapHomologicalComplexUpToQuasiIso c ≅
  F.mapHomotopyCategory c ⋙ HomologicalComplexUpToQuasiIso.Qh

full_name: CategoryTheory.Functor.instLiftingHomotopyCategoryHomologicalComplexUpToQuasiIsoQhQuasiIsoCompMapHomotopyCategoryMapHomologicalComplexUpToQuasiIso
code: noncomputable instance :
    Localization.Lifting HomologicalComplexUpToQuasiIso.Qh (HomotopyCategory.quasiIso C c)
      (F.mapHomotopyCategory c ⋙ HomologicalComplexUpToQuasiIso.Qh)
      (F.mapHomologicalComplexUpToQuasiIso c) 
goal: CategoryTheory.Localization.Lifting HomologicalComplexUpToQuasiIso.Qh (HomotopyCategory.quasiIso C c)
  (F.mapHomotopyCategory c ⋙ HomologicalComplexUpToQuasiIso.Qh) (F.mapHomologicalComplexUpToQuasiIso c)

full_name: CategoryTheory.Functor.mapHomologicalComplexUpToQuasiIsoFactorsh_hom_app
code: @[reassoc]
lemma mapHomologicalComplexUpToQuasiIsoFactorsh_hom_app (K : HomologicalComplex C c) :
    (F.mapHomologicalComplexUpToQuasiIsoFactorsh c).hom.app
        ((HomotopyCategory.quotient _ _).obj K) =
      (F.mapHomologicalComplexUpToQuasiIso c).map
          ((HomologicalComplexUpToQuasiIso.quotientCompQhIso C c).hom.app K) ≫
        (F.mapHomologicalComplexUpToQuasiIsoFactors c).hom.app K ≫
          (HomologicalComplexUpToQuasiIso.quotientCompQhIso D c).inv.app _ ≫
            HomologicalComplexUpToQuasiIso.Qh.map
              ((F.mapHomotopyCategoryFactors c).inv.app K) 
goal: (F.mapHomologicalComplexUpToQuasiIsoFactorsh c).hom.app ((HomotopyCategory.quotient C c).obj K) =
  (F.mapHomologicalComplexUpToQuasiIso c).map ((HomologicalComplexUpToQuasiIso.quotientCompQhIso C c).hom.app K) ≫
    (F.mapHomologicalComplexUpToQuasiIsoFactors c).hom.app K ≫
      (HomologicalComplexUpToQuasiIso.quotientCompQhIso D c).inv.app ((F.mapHomologicalComplex c).obj K) ≫
        HomologicalComplexUpToQuasiIso.Qh.map ((F.mapHomotopyCategoryFactors c).inv.app K)