File: Mathlib/Algebra/Homology/HomotopyCofiber.lean

full_name: HomologicalComplex.HasHomotopyCofiber.hasBinaryBiproduct
code: /-- A morphism of homological complexes `φ : F ⟶ G` has a homotopy cofiber if for all
indices `i` and `j` such that `c.Rel i j`, the binary biproduct `F.X j ⊞ G.X i` exists. -/
class HasHomotopyCofiber (φ : F ⟶ G) : Prop where
  hasBinaryBiproduct (i j : ι) (hij : c.Rel i j) : HasBinaryBiproduct (F.X j) (G.X i)
goal: CategoryTheory.Limits.HasBinaryBiproduct (F.X j) (G.X i)

full_name: HomologicalComplex.HasHomotopyCofiber
code: /-- A morphism of homological complexes `φ : F ⟶ G` has a homotopy cofiber if for all
indices `i` and `j` such that `c.Rel i j`, the binary biproduct `F.X j ⊞ G.X i` exists. -/
class HasHomotopyCofiber (φ : F ⟶ G) : Prop where
  hasBinaryBiproduct (i j : ι) (hij : c.Rel i j) : HasBinaryBiproduct (F.X j) (G.X i)
goal: Prop

full_name: HomologicalComplex.instHasHomotopyCofiberOfHasBinaryBiproducts
code: instance [HasBinaryBiproducts C] : HasHomotopyCofiber φ 
goal: HomologicalComplex.HasHomotopyCofiber φ

full_name: HomologicalComplex.homotopyCofiber.X
code: /-- The `X` field of the homological complex `homotopyCofiber φ`. -/
noncomputable def X (i : ι) : C 
goal: C

full_name: HomologicalComplex.homotopyCofiber.XIsoBiprod
code: /-- The canonical isomorphism `(homotopyCofiber φ).X i ≅ F.X j ⊞ G.X i` when `c.Rel i j`. -/
noncomputable def XIsoBiprod (i j : ι) (hij : c.Rel i j) [HasBinaryBiproduct (F.X j) (G.X i)] :
    X φ i ≅ F.X j ⊞ G.X i 
goal: HomologicalComplex.homotopyCofiber.X φ i ≅ F.X j ⊞ G.X i

full_name: HomologicalComplex.homotopyCofiber.XIso
code: /-- The canonical isomorphism `(homotopyCofiber φ).X i ≅ G.X i` when `¬ c.Rel i (c.next i)`. -/
noncomputable def XIso (i : ι) (hi : ¬ c.Rel i (c.next i)) :
    X φ i ≅ G.X i 
goal: HomologicalComplex.homotopyCofiber.X φ i ≅ G.X i

full_name: HomologicalComplex.homotopyCofiber.sndX
code: /-- The second projection `(homotopyCofiber φ).X i ⟶ G.X i`. -/
noncomputable def sndX (i : ι) : X φ i ⟶ G.X i 
goal: HomologicalComplex.homotopyCofiber.X φ i ⟶ G.X i

full_name: HomologicalComplex.homotopyCofiber.inrX
code: /-- The right inclusion `G.X i ⟶ (homotopyCofiber φ).X i`. -/
noncomputable def inrX (i : ι) : G.X i ⟶ X φ i 
goal: G.X i ⟶ HomologicalComplex.homotopyCofiber.X φ i

full_name: HomologicalComplex.homotopyCofiber.inrX_sndX
code: @[reassoc (attr := simp)]
lemma inrX_sndX (i : ι) : inrX φ i ≫ sndX φ i = 𝟙 _ 
goal: HomologicalComplex.homotopyCofiber.inrX φ i ≫ HomologicalComplex.homotopyCofiber.sndX φ i = 𝟙 (G.X i)

full_name: HomologicalComplex.homotopyCofiber.sndX_inrX
code: @[reassoc]
lemma sndX_inrX (i : ι) (hi : ¬ c.Rel i (c.next i)) :
    sndX φ i ≫ inrX φ i = 𝟙 _ 
goal: HomologicalComplex.homotopyCofiber.sndX φ i ≫ HomologicalComplex.homotopyCofiber.inrX φ i =
  𝟙 (HomologicalComplex.homotopyCofiber.X φ i)

full_name: HomologicalComplex.homotopyCofiber.fstX
code: /-- The first projection `(homotopyCofiber φ).X i ⟶ F.X j` when `c.Rel i j`. -/
noncomputable def fstX (i j : ι) (hij : c.Rel i j) : X φ i ⟶ F.X j 
goal: HomologicalComplex.homotopyCofiber.X φ i ⟶ F.X j

full_name: HomologicalComplex.homotopyCofiber.inlX
code: /-- The left inclusion `F.X i ⟶ (homotopyCofiber φ).X j` when `c.Rel j i`. -/
noncomputable def inlX (i j : ι) (hij : c.Rel j i) : F.X i ⟶ X φ j 
goal: F.X i ⟶ HomologicalComplex.homotopyCofiber.X φ j

full_name: HomologicalComplex.homotopyCofiber.inlX_fstX
code: @[reassoc (attr := simp)]
lemma inlX_fstX (i j : ι ) (hij : c.Rel j i) :
    inlX φ i j hij ≫ fstX φ j i hij = 𝟙 _ 
goal: HomologicalComplex.homotopyCofiber.inlX φ i j hij ≫ HomologicalComplex.homotopyCofiber.fstX φ j i hij = 𝟙 (F.X i)

full_name: HomologicalComplex.homotopyCofiber.inlX_sndX
code: @[reassoc (attr := simp)]
lemma inlX_sndX (i j : ι) (hij : c.Rel j i) :
    inlX φ i j hij ≫ sndX φ j = 0 
goal: HomologicalComplex.homotopyCofiber.inlX φ i j hij ≫ HomologicalComplex.homotopyCofiber.sndX φ j = 0

full_name: HomologicalComplex.homotopyCofiber.inrX_fstX
code: @[reassoc (attr := simp)]
lemma inrX_fstX (i j : ι) (hij : c.Rel i j) :
    inrX φ i ≫ fstX φ i j hij = 0 
goal: HomologicalComplex.homotopyCofiber.inrX φ i ≫ HomologicalComplex.homotopyCofiber.fstX φ i j hij = 0

full_name: HomologicalComplex.homotopyCofiber.d
code: /-- The `d` field of the homological complex `homotopyCofiber φ`. -/
noncomputable def d (i j : ι) : X φ i ⟶ X φ j 
goal: HomologicalComplex.homotopyCofiber.X φ i ⟶ HomologicalComplex.homotopyCofiber.X φ j

full_name: HomologicalComplex.homotopyCofiber.ext_to_X
code: lemma ext_to_X (i j : ι) (hij : c.Rel i j) {A : C} {f g : A ⟶ X φ i}
    (h₁ : f ≫ fstX φ i j hij = g ≫ fstX φ i j hij) (h₂ : f ≫ sndX φ i = g ≫ sndX φ i) :
    f = g 
goal: f = g

full_name: HomologicalComplex.homotopyCofiber.ext_to_X'
code: lemma ext_to_X' (i : ι) (hi : ¬ c.Rel i (c.next i)) {A : C} {f g : A ⟶ X φ i}
    (h : f ≫ sndX φ i = g ≫ sndX φ i) : f = g 
goal: f = g

full_name: HomologicalComplex.homotopyCofiber.ext_from_X
code: lemma ext_from_X (i j : ι) (hij : c.Rel j i) {A : C} {f g : X φ j ⟶ A}
    (h₁ : inlX φ i j hij ≫ f = inlX φ i j hij ≫ g) (h₂ : inrX φ j ≫ f = inrX φ j ≫ g) :
    f = g 
goal: f = g

full_name: HomologicalComplex.homotopyCofiber.ext_from_X'
code: lemma ext_from_X' (i : ι) (hi : ¬ c.Rel i (c.next i)) {A : C} {f g : X φ i ⟶ A}
    (h : inrX φ i ≫ f = inrX φ i ≫ g) : f = g 
goal: f = g

full_name: HomologicalComplex.homotopyCofiber.d_fstX
code: @[reassoc]
lemma d_fstX (i j k : ι) (hij : c.Rel i j) (hjk : c.Rel j k) :
    d φ i j ≫ fstX φ j k hjk = -fstX φ i j hij ≫ F.d j k 
goal: HomologicalComplex.homotopyCofiber.d φ i j ≫ HomologicalComplex.homotopyCofiber.fstX φ j k hjk =
  -HomologicalComplex.homotopyCofiber.fstX φ i j hij ≫ F.d j k

full_name: HomologicalComplex.homotopyCofiber.d_sndX
code: @[reassoc]
lemma d_sndX (i j : ι) (hij : c.Rel i j) :
    d φ i j ≫ sndX φ j = fstX φ i j hij ≫ φ.f j + sndX φ i ≫ G.d i j 
goal: HomologicalComplex.homotopyCofiber.d φ i j ≫ HomologicalComplex.homotopyCofiber.sndX φ j =
  HomologicalComplex.homotopyCofiber.fstX φ i j hij ≫ φ.f j + HomologicalComplex.homotopyCofiber.sndX φ i ≫ G.d i j

full_name: HomologicalComplex.homotopyCofiber.inlX_d
code: @[reassoc]
lemma inlX_d (i j k : ι) (hij : c.Rel i j) (hjk : c.Rel j k) :
    inlX φ j i hij ≫ d φ i j = -F.d j k ≫ inlX φ k j hjk + φ.f j ≫ inrX φ j 
goal: HomologicalComplex.homotopyCofiber.inlX φ j i hij ≫ HomologicalComplex.homotopyCofiber.d φ i j =
  -F.d j k ≫ HomologicalComplex.homotopyCofiber.inlX φ k j hjk + φ.f j ≫ HomologicalComplex.homotopyCofiber.inrX φ j

full_name: HomologicalComplex.homotopyCofiber.inlX_d'
code: @[reassoc]
lemma inlX_d' (i j : ι) (hij : c.Rel i j) (hj : ¬ c.Rel j (c.next j)) :
    inlX φ j i hij ≫ d φ i j = φ.f j ≫ inrX φ j 
goal: HomologicalComplex.homotopyCofiber.inlX φ j i hij ≫ HomologicalComplex.homotopyCofiber.d φ i j =
  φ.f j ≫ HomologicalComplex.homotopyCofiber.inrX φ j

full_name: HomologicalComplex.homotopyCofiber.shape
code: lemma shape (i j : ι) (hij : ¬ c.Rel i j) :
    d φ i j = 0 
goal: HomologicalComplex.homotopyCofiber.d φ i j = 0

full_name: HomologicalComplex.homotopyCofiber.inrX_d
code: @[reassoc (attr := simp)]
lemma inrX_d (i j : ι) :
    inrX φ i ≫ d φ i j = G.d i j ≫ inrX φ j 
goal: HomologicalComplex.homotopyCofiber.inrX φ i ≫ HomologicalComplex.homotopyCofiber.d φ i j =
  G.d i j ≫ HomologicalComplex.homotopyCofiber.inrX φ j

full_name: HomologicalComplex.homotopyCofiber
code: /-- The homotopy cofiber of a morphism of homological complexes,
also known as the mapping cone. -/
@[simps]
noncomputable def homotopyCofiber : HomologicalComplex C c 
goal: HomologicalComplex C c

full_name: HomologicalComplex.homotopyCofiber_d
code: /-- The homotopy cofiber of a morphism of homological complexes,
also known as the mapping cone. -/
@[simps]
noncomputable def homotopyCofiber : HomologicalComplex C c 
goal: (HomologicalComplex.homotopyCofiber φ).d i j = HomologicalComplex.homotopyCofiber.d φ i j

full_name: HomologicalComplex.homotopyCofiber_X
code: /-- The homotopy cofiber of a morphism of homological complexes,
also known as the mapping cone. -/
@[simps]
noncomputable def homotopyCofiber : HomologicalComplex C c 
goal: (HomologicalComplex.homotopyCofiber φ).X i = HomologicalComplex.homotopyCofiber.X φ i

full_name: HomologicalComplex.homotopyCofiber.inr
code: /-- The right inclusion `G ⟶ homotopyCofiber φ`. -/
@[simps!]
noncomputable def inr : G ⟶ homotopyCofiber φ 
goal: G ⟶ HomologicalComplex.homotopyCofiber φ

full_name: HomologicalComplex.homotopyCofiber.inr_f
code: /-- The right inclusion `G ⟶ homotopyCofiber φ`. -/
@[simps!]
noncomputable def inr : G ⟶ homotopyCofiber φ 
goal: (HomologicalComplex.homotopyCofiber.inr φ).f i = HomologicalComplex.homotopyCofiber.inrX φ i

full_name: HomologicalComplex.homotopyCofiber.inrCompHomotopy
code: /-- The composition `φ ≫ mappingCone.inr φ` is homotopic to `0`. -/
noncomputable def inrCompHomotopy :
    Homotopy (φ ≫ inr φ) 0 
goal: Homotopy (φ ≫ HomologicalComplex.homotopyCofiber.inr φ) 0

full_name: HomologicalComplex.homotopyCofiber.inrCompHomotopy_hom
code: lemma inrCompHomotopy_hom (i j : ι) (hij : c.Rel j i) :
    (inrCompHomotopy φ hc).hom i j = inlX φ i j hij 
goal: (HomologicalComplex.homotopyCofiber.inrCompHomotopy φ hc).hom i j = HomologicalComplex.homotopyCofiber.inlX φ i j hij

full_name: HomologicalComplex.homotopyCofiber.inrCompHomotopy_hom_eq_zero
code: lemma inrCompHomotopy_hom_eq_zero (i j : ι) (hij : ¬ c.Rel j i) :
    (inrCompHomotopy φ hc).hom i j = 0 
goal: (HomologicalComplex.homotopyCofiber.inrCompHomotopy φ hc).hom i j = 0

full_name: HomologicalComplex.homotopyCofiber.desc
code: /-- The morphism `homotopyCofiber φ ⟶ K` that is induced by a morphism `α : G ⟶ K`
and a homotopy `hα : Homotopy (φ ≫ α) 0`. -/
noncomputable def desc :
    homotopyCofiber φ ⟶ K 
goal: HomologicalComplex.homotopyCofiber φ ⟶ K

full_name: HomologicalComplex.homotopyCofiber.desc_f
code: lemma desc_f (j k : ι) (hjk : c.Rel j k) :
    (desc φ α hα).f j = fstX φ j _ hjk ≫ hα.hom _ j + sndX φ j ≫ α.f j 
goal: (HomologicalComplex.homotopyCofiber.desc φ α hα).f j =
  HomologicalComplex.homotopyCofiber.fstX φ j k hjk ≫ hα.hom k j + HomologicalComplex.homotopyCofiber.sndX φ j ≫ α.f j

full_name: HomologicalComplex.homotopyCofiber.desc_f'
code: lemma desc_f' (j : ι) (hj : ¬ c.Rel j (c.next j)) :
    (desc φ α hα).f j = sndX φ j ≫ α.f j 
goal: (HomologicalComplex.homotopyCofiber.desc φ α hα).f j = HomologicalComplex.homotopyCofiber.sndX φ j ≫ α.f j

full_name: HomologicalComplex.homotopyCofiber.inlX_desc_f
code: @[reassoc (attr := simp)]
lemma inlX_desc_f (i j : ι) (hjk : c.Rel j i) :
    inlX φ i j hjk ≫ (desc φ α hα).f j = hα.hom i j 
goal: HomologicalComplex.homotopyCofiber.inlX φ i j hjk ≫ (HomologicalComplex.homotopyCofiber.desc φ α hα).f j = hα.hom i j

full_name: HomologicalComplex.homotopyCofiber.inrX_desc_f
code: @[reassoc (attr := simp)]
lemma inrX_desc_f (i : ι) :
    inrX φ i ≫ (desc φ α hα).f i = α.f i 
goal: HomologicalComplex.homotopyCofiber.inrX φ i ≫ (HomologicalComplex.homotopyCofiber.desc φ α hα).f i = α.f i

full_name: HomologicalComplex.homotopyCofiber.inr_desc
code: @[reassoc (attr := simp)]
lemma inr_desc :
    inr φ ≫ desc φ α hα = α 
goal: HomologicalComplex.homotopyCofiber.inr φ ≫ HomologicalComplex.homotopyCofiber.desc φ α hα = α

full_name: HomologicalComplex.homotopyCofiber.inrCompHomotopy_hom_desc_hom
code: @[reassoc (attr := simp)]
lemma inrCompHomotopy_hom_desc_hom (hc : ∀ j, ∃ i, c.Rel i j) (i j : ι) :
    (inrCompHomotopy φ hc).hom i j ≫ (desc φ α hα).f j = hα.hom i j 
goal: (HomologicalComplex.homotopyCofiber.inrCompHomotopy φ hc).hom i j ≫
    (HomologicalComplex.homotopyCofiber.desc φ α hα).f j =
  hα.hom i j

full_name: HomologicalComplex.homotopyCofiber.eq_desc
code: lemma eq_desc (f : homotopyCofiber φ ⟶ K) (hc : ∀ j, ∃ i, c.Rel i j) :
    f = desc φ (inr φ ≫ f) (Homotopy.trans (Homotopy.ofEq (by simp))
      (((inrCompHomotopy φ hc).compRight f).trans (Homotopy.ofEq (by simp)))) 
goal: f =
  HomologicalComplex.homotopyCofiber.desc φ (HomologicalComplex.homotopyCofiber.inr φ ≫ f)
    ((Homotopy.ofEq ⋯).trans
      (((HomologicalComplex.homotopyCofiber.inrCompHomotopy φ hc).compRight f).trans (Homotopy.ofEq ⋯)))

full_name: HomologicalComplex.homotopyCofiber.descSigma_ext_iff
code: lemma descSigma_ext_iff {K : HomologicalComplex C c}
    (x y : Σ (α : G ⟶ K), Homotopy (φ ≫ α) 0) :
    x = y ↔ x.1 = y.1 ∧ (∀ (i j : ι) (_ : c.Rel j i), x.2.hom i j = y.2.hom i j) 
goal: x = y ↔ x.fst = y.fst ∧ ∀ (i j : ι), c.Rel j i → x.snd.hom i j = y.snd.hom i j

full_name: HomologicalComplex.homotopyCofiber.descEquiv
code: /-- Morphisms `homotopyCofiber φ ⟶ K` are uniquely determined by
a morphism `α : G ⟶ K` and a homotopy from `φ ≫ α` to `0`. -/
noncomputable def descEquiv (K : HomologicalComplex C c) (hc : ∀ j, ∃ i, c.Rel i j) :
    (Σ (α : G ⟶ K), Homotopy (φ ≫ α) 0) ≃ (homotopyCofiber φ ⟶ K) 
goal: (α : G ⟶ K) × Homotopy (φ ≫ α) 0 ≃ (HomologicalComplex.homotopyCofiber φ ⟶ K)

full_name: HomologicalComplex.cylinder
code: /-- The cylinder object of a homological complex `K` is the homotopy cofiber
of the morphism  `biprod.lift (𝟙 K) (-𝟙 K) : K ⟶ K ⊞ K`. -/
noncomputable abbrev cylinder 
goal: HomologicalComplex C c

full_name: HomologicalComplex.cylinder.ι₀
code: /-- The left inclusion `K ⟶ K.cylinder`. -/
noncomputable def ι₀ : K ⟶ K.cylinder 
goal: K ⟶ K.cylinder

full_name: HomologicalComplex.cylinder.ι₁
code: /-- The right inclusion `K ⟶ K.cylinder`. -/
noncomputable def ι₁ : K ⟶ K.cylinder 
goal: K ⟶ K.cylinder

full_name: HomologicalComplex.cylinder.desc
code: /-- The morphism `K.cylinder ⟶ F` that is induced by two morphisms `φ₀ φ₁ : K ⟶ F`
and a homotopy `h : Homotopy φ₀ φ₁`. -/
noncomputable def desc : K.cylinder ⟶ F 
goal: K.cylinder ⟶ F

full_name: HomologicalComplex.cylinder.ι₀_desc
code: @[reassoc (attr := simp)]
lemma ι₀_desc : ι₀ K ≫ desc φ₀ φ₁ h = φ₀ 
goal: HomologicalComplex.cylinder.ι₀ K ≫ HomologicalComplex.cylinder.desc φ₀ φ₁ h = φ₀

full_name: HomologicalComplex.cylinder.ι₁_desc
code: @[reassoc (attr := simp)]
lemma ι₁_desc : ι₁ K ≫ desc φ₀ φ₁ h = φ₁ 
goal: HomologicalComplex.cylinder.ι₁ K ≫ HomologicalComplex.cylinder.desc φ₀ φ₁ h = φ₁

full_name: HomologicalComplex.cylinder.π
code: /-- The projection `π : K.cylinder ⟶ K`. -/
noncomputable def π : K.cylinder ⟶ K 
goal: K.cylinder ⟶ K

full_name: HomologicalComplex.cylinder.ι₀_π
code: @[reassoc (attr := simp)]
lemma ι₀_π : ι₀ K ≫ π K = 𝟙 K 
goal: HomologicalComplex.cylinder.ι₀ K ≫ HomologicalComplex.cylinder.π K = 𝟙 K

full_name: HomologicalComplex.cylinder.ι₁_π
code: @[reassoc (attr := simp)]
lemma ι₁_π : ι₁ K ≫ π K = 𝟙 K 
goal: HomologicalComplex.cylinder.ι₁ K ≫ HomologicalComplex.cylinder.π K = 𝟙 K

full_name: HomologicalComplex.cylinder.inlX
code: /-- The left inclusion `K.X i ⟶ K.cylinder.X j` when `c.Rel j i`. -/
noncomputable abbrev inlX (i j : ι) (hij : c.Rel j i) : K.X i ⟶ K.cylinder.X j 
goal: K.X i ⟶ K.cylinder.X j

full_name: HomologicalComplex.cylinder.inrX
code: /-- The right inclusion `(K ⊞ K).X i ⟶ K.cylinder.X i`. -/
noncomputable abbrev inrX (i : ι) : (K ⊞ K).X i ⟶ K.cylinder.X i 
goal: (K ⊞ K).X i ⟶ K.cylinder.X i

full_name: HomologicalComplex.cylinder.inlX_π
code: @[reassoc (attr := simp)]
lemma inlX_π (i j : ι) (hij : c.Rel j i) :
    inlX K i j hij ≫ (π K).f j = 0 
goal: HomologicalComplex.cylinder.inlX K i j hij ≫ (HomologicalComplex.cylinder.π K).f j = 0

full_name: HomologicalComplex.cylinder.inrX_π
code: @[reassoc (attr := simp)]
lemma inrX_π (i : ι) :
    inrX K i ≫ (π K).f i = (biprod.desc (𝟙 _) (𝟙 K)).f i 
goal: HomologicalComplex.cylinder.inrX K i ≫ (HomologicalComplex.cylinder.π K).f i =
  (CategoryTheory.Limits.biprod.desc (𝟙 K) (𝟙 K)).f i

full_name: HomologicalComplex.cylinder.πCompι₀Homotopy.nullHomotopicMap
code: /-- A null homotopic map `K.cylinder ⟶ K.cylinder` which identifies to
`π K ≫ ι₀ K - 𝟙 _`, see `nullHomotopicMap_eq`. -/
noncomputable def nullHomotopicMap : K.cylinder ⟶ K.cylinder 
goal: K.cylinder ⟶ K.cylinder

full_name: HomologicalComplex.cylinder.πCompι₀Homotopy.nullHomotopy
code: /-- The obvious homotopy from `nullHomotopicMap K` to zero. -/
noncomputable def nullHomotopy : Homotopy (nullHomotopicMap K) 0 
goal: Homotopy (HomologicalComplex.cylinder.πCompι₀Homotopy.nullHomotopicMap K) 0

full_name: HomologicalComplex.cylinder.πCompι₀Homotopy.inlX_nullHomotopy_f
code: lemma inlX_nullHomotopy_f (i j : ι) (hij : c.Rel j i) :
    inlX K i j hij ≫ (nullHomotopicMap K).f j =
      inlX K i j hij ≫ (π K ≫ ι₀ K - 𝟙 _).f j 
goal: HomologicalComplex.cylinder.inlX K i j hij ≫ (HomologicalComplex.cylinder.πCompι₀Homotopy.nullHomotopicMap K).f j =
  HomologicalComplex.cylinder.inlX K i j hij ≫
    (HomologicalComplex.cylinder.π K ≫ HomologicalComplex.cylinder.ι₀ K - 𝟙 K.cylinder).f j

full_name: HomologicalComplex.cylinder.πCompι₀Homotopy.biprod_lift_id_sub_id
code: lemma biprod_lift_id_sub_id : biprod.lift (𝟙 K) (-𝟙 K) = biprod.inl - biprod.inr 
goal: CategoryTheory.Limits.biprod.lift (𝟙 K) (-𝟙 K) = CategoryTheory.Limits.biprod.inl - CategoryTheory.Limits.biprod.inr

full_name: HomologicalComplex.cylinder.πCompι₀Homotopy.inrX_nullHomotopy_f
code: lemma inrX_nullHomotopy_f (j : ι) :
    inrX K j ≫ (nullHomotopicMap K).f j = inrX K j ≫ (π K ≫ ι₀ K - 𝟙 _).f j 
goal: HomologicalComplex.cylinder.inrX K j ≫ (HomologicalComplex.cylinder.πCompι₀Homotopy.nullHomotopicMap K).f j =
  HomologicalComplex.cylinder.inrX K j ≫
    (HomologicalComplex.cylinder.π K ≫ HomologicalComplex.cylinder.ι₀ K - 𝟙 K.cylinder).f j

full_name: HomologicalComplex.cylinder.πCompι₀Homotopy.nullHomotopicMap_eq
code: lemma nullHomotopicMap_eq : nullHomotopicMap K = π K ≫ ι₀ K - 𝟙 _ 
goal: HomologicalComplex.cylinder.πCompι₀Homotopy.nullHomotopicMap K =
  HomologicalComplex.cylinder.π K ≫ HomologicalComplex.cylinder.ι₀ K - 𝟙 K.cylinder

full_name: HomologicalComplex.cylinder.πCompι₀Homotopy
code: /-- The homotopy between `π K ≫ ι₀ K` and `𝟙 K.cylinder`. -/
noncomputable def πCompι₀Homotopy : Homotopy (π K ≫ ι₀ K) (𝟙 K.cylinder) 
goal: Homotopy (HomologicalComplex.cylinder.π K ≫ HomologicalComplex.cylinder.ι₀ K) (𝟙 K.cylinder)

full_name: HomologicalComplex.cylinder.homotopyEquiv
code: /-- The homotopy equivalence between `K.cylinder` and `K`. -/
noncomputable def homotopyEquiv : HomotopyEquiv K.cylinder K 
goal: HomotopyEquiv K.cylinder K

full_name: HomologicalComplex.cylinder.homotopy₀₁
code: /-- The homotopy between `cylinder.ι₀ K` and `cylinder.ι₁ K`. -/
noncomputable def homotopy₀₁ : Homotopy (ι₀ K) (ι₁ K) 
goal: Homotopy (HomologicalComplex.cylinder.ι₀ K) (HomologicalComplex.cylinder.ι₁ K)

full_name: HomologicalComplex.cylinder.map_ι₀_eq_map_ι₁
code: lemma map_ι₀_eq_map_ι₁ {D : Type*} [Category D] (H : HomologicalComplex C c ⥤ D)
    (hH : (homotopyEquivalences C c).IsInvertedBy H) :
    H.map (ι₀ K) = H.map (ι₁ K) 
goal: H.map (HomologicalComplex.cylinder.ι₀ K) = H.map (HomologicalComplex.cylinder.ι₁ K)

full_name: Homotopy.map_eq_of_inverts_homotopyEquivalences
code: /-- If a functor inverts homotopy equivalences, it sends homotopic maps to the same map. -/
lemma _root_.Homotopy.map_eq_of_inverts_homotopyEquivalences
    {φ₀ φ₁ : F ⟶ G} (h : Homotopy φ₀ φ₁) (hc : ∀ j, ∃ i, c.Rel i j)
    [∀ i, HasBinaryBiproduct (F.X i) (F.X i)]
    [HasHomotopyCofiber (biprod.lift (𝟙 F) (-𝟙 F))]
    {D : Type*} [Category D] (H : HomologicalComplex C c ⥤ D)
    (hH : (homotopyEquivalences C c).IsInvertedBy H) :
    H.map φ₀ = H.map φ₁ 
goal: H.map φ₀ = H.map φ₁