File: Mathlib/Algebra/Homology/HomotopyCategory.lean

full_name: homotopic
code: /-- The congruence on `HomologicalComplex V c` given by the existence of a homotopy.
-/
def homotopic : HomRel (HomologicalComplex V c) 
goal: HomRel (HomologicalComplex V c)

full_name: homotopy_congruence
code: instance homotopy_congruence : Congruence (homotopic V c) 
goal: CategoryTheory.Congruence (homotopic V c)

full_name: HomotopyCategory
code: /-- `HomotopyCategory V c` is the category of chain complexes of shape `c` in `V`,
with chain maps identified when they are homotopic. -/
def HomotopyCategory 
goal: Type (max (max u u_2) v)

full_name: instCategoryHomotopyCategory
code: instance : Category (HomotopyCategory V c) 
goal: CategoryTheory.Category.{max u_2 v, max (max u_2 u) v} (HomotopyCategory V c)

full_name: HomotopyCategory.instPreadditive
code: instance : Preadditive (HomotopyCategory V c) 
goal: CategoryTheory.Preadditive (HomotopyCategory V c)

full_name: HomotopyCategory.quotient
code: /-- The quotient functor from complexes to the homotopy category. -/
def quotient : HomologicalComplex V c ⥤ HomotopyCategory V c 
goal: HomologicalComplex V c ⥤ HomotopyCategory V c

full_name: HomotopyCategory.instFullHomologicalComplexQuotient
code: instance : (quotient V c).Full 
goal: (HomotopyCategory.quotient V c).Full

full_name: HomotopyCategory.instEssSurjHomologicalComplexQuotient
code: instance : (quotient V c).EssSurj 
goal: (HomotopyCategory.quotient V c).EssSurj

full_name: HomotopyCategory.instAdditiveHomologicalComplexQuotient
code: instance : (quotient V c).Additive 
goal: (HomotopyCategory.quotient V c).Additive

full_name: HomotopyCategory.instPreadditiveQuotientHomologicalComplexHomotopic
code: instance : Preadditive (CategoryTheory.Quotient (homotopic V c)) 
goal: CategoryTheory.Preadditive (CategoryTheory.Quotient (homotopic V c))

full_name: HomotopyCategory.instAdditiveHomologicalComplexQuotientHomotopicFunctor
code: instance : Functor.Additive (Quotient.functor (homotopic V c)) 
goal: (CategoryTheory.Quotient.functor (homotopic V c)).Additive

full_name: HomotopyCategory.instLinear
code: instance [Linear R V] : Linear R (HomotopyCategory V c) 
goal: CategoryTheory.Linear R (HomotopyCategory V c)

full_name: HomotopyCategory.instLinearHomologicalComplexQuotient
code: instance [Linear R V] : Functor.Linear R (HomotopyCategory.quotient V c) 
goal: CategoryTheory.Functor.Linear R (HomotopyCategory.quotient V c)

full_name: HomotopyCategory.instInhabitedOfHasZeroObject
code: instance [HasZeroObject V] : Inhabited (HomotopyCategory V c) 
goal: Inhabited (HomotopyCategory V c)

full_name: HomotopyCategory.instHasZeroObject
code: instance [HasZeroObject V] : HasZeroObject (HomotopyCategory V c) 
goal: CategoryTheory.Limits.HasZeroObject (HomotopyCategory V c)

full_name: HomotopyCategory.instFullFunctorHomologicalComplexObjWhiskeringLeftQuotient
code: instance {D : Type*} [Category D] : ((whiskeringLeft _ _ D).obj (quotient V c)).Full 
goal: ((CategoryTheory.whiskeringLeft (HomologicalComplex V c) (HomotopyCategory V c) D).obj
    (HomotopyCategory.quotient V c)).Full

full_name: HomotopyCategory.instFaithfulFunctorHomologicalComplexObjWhiskeringLeftQuotient
code: instance {D : Type*} [Category D] : ((whiskeringLeft _ _ D).obj (quotient V c)).Faithful 
goal: ((CategoryTheory.whiskeringLeft (HomologicalComplex V c) (HomotopyCategory V c) D).obj
    (HomotopyCategory.quotient V c)).Faithful

full_name: HomotopyCategory.quotient_obj_as
code: theorem quotient_obj_as (C : HomologicalComplex V c) : ((quotient V c).obj C).as = C 
goal: ((HomotopyCategory.quotient V c).obj C).as = C

full_name: HomotopyCategory.quotient_map_out
code: @[simp]
theorem quotient_map_out {C D : HomotopyCategory V c} (f : C ⟶ D) : (quotient V c).map f.out = f 
goal: (HomotopyCategory.quotient V c).map (Quot.out f) = f

full_name: HomotopyCategory.quot_mk_eq_quotient_map
code: theorem quot_mk_eq_quotient_map {C D : HomologicalComplex V c} (f : C ⟶ D) :
    Quot.mk _ f = (quotient V c).map f 
goal: Quot.mk (CategoryTheory.Quotient.CompClosure (homotopic V c)) f = (HomotopyCategory.quotient V c).map f

full_name: HomotopyCategory.eq_of_homotopy
code: theorem eq_of_homotopy {C D : HomologicalComplex V c} (f g : C ⟶ D) (h : Homotopy f g) :
    (quotient V c).map f = (quotient V c).map g 
goal: (HomotopyCategory.quotient V c).map f = (HomotopyCategory.quotient V c).map g

full_name: HomotopyCategory.homotopyOfEq
code: /-- If two chain maps become equal in the homotopy category, then they are homotopic. -/
def homotopyOfEq {C D : HomologicalComplex V c} (f g : C ⟶ D)
    (w : (quotient V c).map f = (quotient V c).map g) : Homotopy f g 
goal: Homotopy f g

full_name: HomotopyCategory.homotopyOutMap
code: /-- An arbitrarily chosen representation of the image of a chain map in the homotopy category
is homotopic to the original chain map.
-/
def homotopyOutMap {C D : HomologicalComplex V c} (f : C ⟶ D) :
    Homotopy ((quotient V c).map f).out f 
goal: Homotopy (Quot.out ((HomotopyCategory.quotient V c).map f)) f

full_name: HomotopyCategory.quotient_map_out_comp_out
code: @[simp 1100]
theorem quotient_map_out_comp_out {C D E : HomotopyCategory V c} (f : C ⟶ D) (g : D ⟶ E) :
    (quotient V c).map (Quot.out f ≫ Quot.out g) = f ≫ g 
goal: (HomotopyCategory.quotient V c).map (Quot.out f ≫ Quot.out g) = f ≫ g

full_name: HomotopyCategory.isoOfHomotopyEquiv_inv
code: /-- Homotopy equivalent complexes become isomorphic in the homotopy category. -/
@[simps]
def isoOfHomotopyEquiv {C D : HomologicalComplex V c} (f : HomotopyEquiv C D) :
    (quotient V c).obj C ≅ (quotient V c).obj D 
goal: (HomotopyCategory.isoOfHomotopyEquiv f).inv = (HomotopyCategory.quotient V c).map f.inv

full_name: HomotopyCategory.isoOfHomotopyEquiv_hom
code: /-- Homotopy equivalent complexes become isomorphic in the homotopy category. -/
@[simps]
def isoOfHomotopyEquiv {C D : HomologicalComplex V c} (f : HomotopyEquiv C D) :
    (quotient V c).obj C ≅ (quotient V c).obj D 
goal: (HomotopyCategory.isoOfHomotopyEquiv f).hom = (HomotopyCategory.quotient V c).map f.hom

full_name: HomotopyCategory.isoOfHomotopyEquiv
code: /-- Homotopy equivalent complexes become isomorphic in the homotopy category. -/
@[simps]
def isoOfHomotopyEquiv {C D : HomologicalComplex V c} (f : HomotopyEquiv C D) :
    (quotient V c).obj C ≅ (quotient V c).obj D 
goal: (HomotopyCategory.quotient V c).obj C ≅ (HomotopyCategory.quotient V c).obj D

full_name: HomotopyCategory.homotopyEquivOfIso
code: /-- If two complexes become isomorphic in the homotopy category,
  then they were homotopy equivalent. -/
def homotopyEquivOfIso {C D : HomologicalComplex V c}
    (i : (quotient V c).obj C ≅ (quotient V c).obj D) : HomotopyEquiv C D 
goal: HomotopyEquiv C D

full_name: HomotopyCategory.quotient_inverts_homotopyEquivalences
code: lemma quotient_inverts_homotopyEquivalences :
    (HomologicalComplex.homotopyEquivalences V c).IsInvertedBy (quotient V c) 
goal: (HomologicalComplex.homotopyEquivalences V c).IsInvertedBy (HomotopyCategory.quotient V c)

full_name: HomotopyCategory.isZero_quotient_obj_iff
code: lemma isZero_quotient_obj_iff (C : HomologicalComplex V c) :
    IsZero ((quotient _ _).obj C) ↔ Nonempty (Homotopy (𝟙 C) 0) 
goal: CategoryTheory.Limits.IsZero ((HomotopyCategory.quotient V c).obj C) ↔ Nonempty (Homotopy (𝟙 C) 0)

full_name: HomotopyCategory.homologyFunctor
code: /-- The `i`-th homology, as a functor from the homotopy category. -/
noncomputable def homologyFunctor (i : ι) : HomotopyCategory V c ⥤ V 
goal: HomotopyCategory V c ⥤ V

full_name: HomotopyCategory.homologyFunctorFactors
code: /-- The homology functor on the homotopy category is induced by
the homology functor on homological complexes. -/
noncomputable def homologyFunctorFactors (i : ι) :
    quotient V c ⋙ homologyFunctor V c i ≅
      HomologicalComplex.homologyFunctor V c i 
goal: HomotopyCategory.quotient V c ⋙ HomotopyCategory.homologyFunctor V c i ≅ HomologicalComplex.homologyFunctor V c i

full_name: HomotopyCategory.instAdditiveHomologyFunctor
code: instance (i : ι) : (homologyFunctor V c i).Additive 
goal: (HomotopyCategory.homologyFunctor V c i).Additive

full_name: CategoryTheory.Functor.mapHomotopyCategory_obj
code: /-- An additive functor induces a functor between homotopy categories. -/
@[simps! obj]
def Functor.mapHomotopyCategory (F : V ⥤ W) [F.Additive] (c : ComplexShape ι) :
    HomotopyCategory V c ⥤ HomotopyCategory W c 
goal: (F.mapHomotopyCategory c).obj a = (HomotopyCategory.quotient W c).obj ((F.mapHomologicalComplex c).obj a.as)

full_name: CategoryTheory.Functor.mapHomotopyCategory
code: /-- An additive functor induces a functor between homotopy categories. -/
@[simps! obj]
def Functor.mapHomotopyCategory (F : V ⥤ W) [F.Additive] (c : ComplexShape ι) :
    HomotopyCategory V c ⥤ HomotopyCategory W c 
goal: HomotopyCategory V c ⥤ HomotopyCategory W c

full_name: CategoryTheory.Functor.mapHomotopyCategory_map
code: @[simp]
lemma Functor.mapHomotopyCategory_map (F : V ⥤ W) [F.Additive] {c : ComplexShape ι}
    {K L : HomologicalComplex V c} (f : K ⟶ L) :
    (F.mapHomotopyCategory c).map ((HomotopyCategory.quotient V c).map f) =
      (HomotopyCategory.quotient W c).map ((F.mapHomologicalComplex c).map f) 
goal: (F.mapHomotopyCategory c).map ((HomotopyCategory.quotient V c).map f) =
  (HomotopyCategory.quotient W c).map ((F.mapHomologicalComplex c).map f)

full_name: CategoryTheory.Functor.mapHomotopyCategoryFactors
code: /-- The obvious isomorphism between
`HomotopyCategory.quotient V c ⋙ F.mapHomotopyCategory c` and
`F.mapHomologicalComplex c ⋙ HomotopyCategory.quotient W c` when `F : V ⥤ W` is
an additive functor. -/
def Functor.mapHomotopyCategoryFactors (F : V ⥤ W) [F.Additive] (c : ComplexShape ι) :
    HomotopyCategory.quotient V c ⋙ F.mapHomotopyCategory c ≅
      F.mapHomologicalComplex c ⋙ HomotopyCategory.quotient W c 
goal: HomotopyCategory.quotient V c ⋙ F.mapHomotopyCategory c ≅ F.mapHomologicalComplex c ⋙ HomotopyCategory.quotient W c

full_name: CategoryTheory.NatTrans.mapHomotopyCategory_app
code: /-- A natural transformation induces a natural transformation between
  the induced functors on the homotopy category. -/
@[simps]
def NatTrans.mapHomotopyCategory {F G : V ⥤ W} [F.Additive] [G.Additive] (α : F ⟶ G)
    (c : ComplexShape ι) : F.mapHomotopyCategory c ⟶ G.mapHomotopyCategory c 
goal: (CategoryTheory.NatTrans.mapHomotopyCategory α c).app C =
  (HomotopyCategory.quotient W c).map ((CategoryTheory.NatTrans.mapHomologicalComplex α c).app C.as)

full_name: CategoryTheory.NatTrans.mapHomotopyCategory
code: /-- A natural transformation induces a natural transformation between
  the induced functors on the homotopy category. -/
@[simps]
def NatTrans.mapHomotopyCategory {F G : V ⥤ W} [F.Additive] [G.Additive] (α : F ⟶ G)
    (c : ComplexShape ι) : F.mapHomotopyCategory c ⟶ G.mapHomotopyCategory c 
goal: F.mapHomotopyCategory c ⟶ G.mapHomotopyCategory c

full_name: CategoryTheory.NatTrans.mapHomotopyCategory_id
code: @[simp]
theorem NatTrans.mapHomotopyCategory_id (c : ComplexShape ι) (F : V ⥤ W) [F.Additive] :
    NatTrans.mapHomotopyCategory (𝟙 F) c = 𝟙 (F.mapHomotopyCategory c) 
goal: CategoryTheory.NatTrans.mapHomotopyCategory (𝟙 F) c = 𝟙 (F.mapHomotopyCategory c)

full_name: CategoryTheory.NatTrans.mapHomotopyCategory_comp
code: @[simp]
theorem NatTrans.mapHomotopyCategory_comp (c : ComplexShape ι) {F G H : V ⥤ W} [F.Additive]
    [G.Additive] [H.Additive] (α : F ⟶ G) (β : G ⟶ H) :
    NatTrans.mapHomotopyCategory (α ≫ β) c =
      NatTrans.mapHomotopyCategory α c ≫ NatTrans.mapHomotopyCategory β c 
goal: CategoryTheory.NatTrans.mapHomotopyCategory (α ≫ β) c =
  CategoryTheory.NatTrans.mapHomotopyCategory α c ≫ CategoryTheory.NatTrans.mapHomotopyCategory β c