Theorem: CochainComplex.mappingCone.trianglehMapOfHomotopy_hom₃
File: Mathlib/Algebra/Homology/HomotopyCategory/Pretriangulated.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ (triangleh φ₁).mor₁ ≫ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map b =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map a ≫ (triangleh φ₂).mor₁
state_after: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map φ₁ ≫ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map b =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map a ≫ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map φ₂
tactic: dsimp
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map φ₁ ≫ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map b =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map a ≫ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map φ₂
state_after: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (φ₁ ≫ b) =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (a ≫ φ₂)
tactic: simp only [← Functor.map_comp]
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (φ₁ ≫ b) =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (a ≫ φ₂)
state_after: no goals
tactic: exact HomotopyCategory.eq_of_homotopy _ _ H
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ (triangleh φ₁).mor₂ ≫ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (mapOfHomotopy H) =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map b ≫ (triangleh φ₂).mor₂
state_after: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (inr φ₁) ≫
      (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (mapOfHomotopy H) =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map b ≫
      (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (inr φ₂)
tactic: dsimp
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (inr φ₁) ≫
      (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (mapOfHomotopy H) =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map b ≫
      (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (inr φ₂)
state_after: no goals
tactic: simp only [← Functor.map_comp, triangleMapOfHomotopy_comm₂]
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ (triangleh φ₁).mor₃ ≫
      (CategoryTheory.shiftFunctor (HomotopyCategory C (ComplexShape.up ℤ)) 1).map
        ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).map a) =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (mapOfHomotopy H) ≫ (triangleh φ₂).mor₃
state_after: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (triangle φ₁).mor₃ ≫
        ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).commShiftIso 1).hom.app K₁) ≫
      (CategoryTheory.shiftFunctor (HomotopyCategory C (ComplexShape.up ℤ)) 1).map
        ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).map a) =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (mapOfHomotopy H) ≫
      (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (triangle φ₂).mor₃ ≫
        ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).commShiftIso 1).hom.app K₂
tactic: dsimp
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (triangle φ₁).mor₃ ≫
        ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).commShiftIso 1).hom.app K₁) ≫
      (CategoryTheory.shiftFunctor (HomotopyCategory C (ComplexShape.up ℤ)) 1).map
        ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).map a) =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (mapOfHomotopy H) ≫
      (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (triangle φ₂).mor₃ ≫
        ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).commShiftIso 1).hom.app K₂
state_after: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (triangle φ₁).mor₃ ≫
      ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).commShiftIso 1).hom.app K₁ ≫
        (CategoryTheory.shiftFunctor (HomotopyCategory C (ComplexShape.up ℤ)) 1).map
          ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).map a) =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (triangle φ₁).mor₃ ≫
      (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map
          ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map a) ≫
        ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).commShiftIso 1).hom.app K₂
tactic: rw [← Functor.map_comp_assoc, triangleMapOfHomotopy_comm₃, Functor.map_comp, assoc, assoc]
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (triangle φ₁).mor₃ ≫
      ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).commShiftIso 1).hom.app K₁ ≫
        (CategoryTheory.shiftFunctor (HomotopyCategory C (ComplexShape.up ℤ)) 1).map
          ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).map a) =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (triangle φ₁).mor₃ ≫
      (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map
          ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map a) ≫
        ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).commShiftIso 1).hom.app K₂
state_after: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (triangle φ₁).mor₃ ≫
      (CategoryTheory.shiftFunctor (HomologicalComplex C (ComplexShape.up ℤ)) 1 ⋙
              HomotopyCategory.quotient C (ComplexShape.up ℤ)).map
          a ≫
        ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).commShiftIso 1).hom.app K₂ =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (triangle φ₁).mor₃ ≫
      (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map
          ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map a) ≫
        ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).commShiftIso 1).hom.app K₂
tactic: erw [← NatTrans.naturality]
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{?u.68425, u_1} C
inst✝⁶ : Category.{?u.68429, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
K₁ L₁ K₂ L₂ K₃ L₃ : CochainComplex C ℤ
φ₁ : K₁ ⟶ L₁
φ₂ : K₂ ⟶ L₂
a : K₁ ⟶ K₂
b : L₁ ⟶ L₂
H : Homotopy (φ₁ ≫ b) (a ≫ φ₂)
⊢ (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (triangle φ₁).mor₃ ≫
      (CategoryTheory.shiftFunctor (HomologicalComplex C (ComplexShape.up ℤ)) 1 ⋙
              HomotopyCategory.quotient C (ComplexShape.up ℤ)).map
          a ≫
        ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).commShiftIso 1).hom.app K₂ =
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (triangle φ₁).mor₃ ≫
      (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map
          ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map a) ≫
        ((HomotopyCategory.quotient C (ComplexShape.up ℤ)).commShiftIso 1).hom.app K₂
state_after: no goals
tactic: rfl