Theorem: CategoryTheory.Functor.mapTriangleIso_inv_app_hom₃
File: Mathlib/CategoryTheory/Triangulated/Functor.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝¹³ : Category.{?u.318300, u_1} C
inst✝¹² : Category.{?u.318304, u_2} D
inst✝¹¹ : Category.{?u.318308, u_3} E
inst✝¹⁰ : HasShift C ℤ
inst✝⁹ : HasShift D ℤ
inst✝⁸ : HasShift E ℤ
F : C ⥤ D
inst✝⁷ : F.CommShift ℤ
G : D ⥤ E
inst✝⁶ : G.CommShift ℤ
inst✝⁵ : Preadditive C
inst✝⁴ : Preadditive D
inst✝³ : F.Additive
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
inst✝² : F₁.CommShift ℤ
inst✝¹ : F₂.CommShift ℤ
inst✝ : NatTrans.CommShift e.hom ℤ
T : Triangle C
⊢ (F₁.mapTriangle.obj T).mor₁ ≫ (e.app T.obj₂).hom = (e.app T.obj₁).hom ≫ (F₂.mapTriangle.obj T).mor₁
state_after: no goals
tactic: simp
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝¹³ : Category.{?u.318300, u_1} C
inst✝¹² : Category.{?u.318304, u_2} D
inst✝¹¹ : Category.{?u.318308, u_3} E
inst✝¹⁰ : HasShift C ℤ
inst✝⁹ : HasShift D ℤ
inst✝⁸ : HasShift E ℤ
F : C ⥤ D
inst✝⁷ : F.CommShift ℤ
G : D ⥤ E
inst✝⁶ : G.CommShift ℤ
inst✝⁵ : Preadditive C
inst✝⁴ : Preadditive D
inst✝³ : F.Additive
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
inst✝² : F₁.CommShift ℤ
inst✝¹ : F₂.CommShift ℤ
inst✝ : NatTrans.CommShift e.hom ℤ
T : Triangle C
⊢ (F₁.mapTriangle.obj T).mor₂ ≫ (e.app T.obj₃).hom = (e.app T.obj₂).hom ≫ (F₂.mapTriangle.obj T).mor₂
state_after: no goals
tactic: simp
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝¹³ : Category.{?u.318300, u_1} C
inst✝¹² : Category.{?u.318304, u_2} D
inst✝¹¹ : Category.{?u.318308, u_3} E
inst✝¹⁰ : HasShift C ℤ
inst✝⁹ : HasShift D ℤ
inst✝⁸ : HasShift E ℤ
F : C ⥤ D
inst✝⁷ : F.CommShift ℤ
G : D ⥤ E
inst✝⁶ : G.CommShift ℤ
inst✝⁵ : Preadditive C
inst✝⁴ : Preadditive D
inst✝³ : F.Additive
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
inst✝² : F₁.CommShift ℤ
inst✝¹ : F₂.CommShift ℤ
inst✝ : NatTrans.CommShift e.hom ℤ
T : Triangle C
⊢ (F₁.mapTriangle.obj T).mor₃ ≫ (shiftFunctor D 1).map (e.app T.obj₁).hom =
    (e.app T.obj₃).hom ≫ (F₂.mapTriangle.obj T).mor₃
state_after: C : Type u_1
D : Type u_2
E : Type u_3
inst✝¹³ : Category.{?u.318300, u_1} C
inst✝¹² : Category.{?u.318304, u_2} D
inst✝¹¹ : Category.{?u.318308, u_3} E
inst✝¹⁰ : HasShift C ℤ
inst✝⁹ : HasShift D ℤ
inst✝⁸ : HasShift E ℤ
F : C ⥤ D
inst✝⁷ : F.CommShift ℤ
G : D ⥤ E
inst✝⁶ : G.CommShift ℤ
inst✝⁵ : Preadditive C
inst✝⁴ : Preadditive D
inst✝³ : F.Additive
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
inst✝² : F₁.CommShift ℤ
inst✝¹ : F₂.CommShift ℤ
inst✝ : NatTrans.CommShift e.hom ℤ
T : Triangle C
⊢ (F₁.map T.mor₃ ≫ (F₁.commShiftIso 1).hom.app T.obj₁) ≫ (shiftFunctor D 1).map (e.hom.app T.obj₁) =
    e.hom.app T.obj₃ ≫ F₂.map T.mor₃ ≫ (F₂.commShiftIso 1).hom.app T.obj₁
tactic: dsimp
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝¹³ : Category.{?u.318300, u_1} C
inst✝¹² : Category.{?u.318304, u_2} D
inst✝¹¹ : Category.{?u.318308, u_3} E
inst✝¹⁰ : HasShift C ℤ
inst✝⁹ : HasShift D ℤ
inst✝⁸ : HasShift E ℤ
F : C ⥤ D
inst✝⁷ : F.CommShift ℤ
G : D ⥤ E
inst✝⁶ : G.CommShift ℤ
inst✝⁵ : Preadditive C
inst✝⁴ : Preadditive D
inst✝³ : F.Additive
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
inst✝² : F₁.CommShift ℤ
inst✝¹ : F₂.CommShift ℤ
inst✝ : NatTrans.CommShift e.hom ℤ
T : Triangle C
⊢ (F₁.map T.mor₃ ≫ (F₁.commShiftIso 1).hom.app T.obj₁) ≫ (shiftFunctor D 1).map (e.hom.app T.obj₁) =
    e.hom.app T.obj₃ ≫ F₂.map T.mor₃ ≫ (F₂.commShiftIso 1).hom.app T.obj₁
state_after: no goals
tactic: simp only [assoc, NatTrans.CommShift.comm_app e.hom (1 : ℤ) T.obj₁,
        NatTrans.naturality_assoc]
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝¹³ : Category.{?u.318300, u_1} C
inst✝¹² : Category.{?u.318304, u_2} D
inst✝¹¹ : Category.{?u.318308, u_3} E
inst✝¹⁰ : HasShift C ℤ
inst✝⁹ : HasShift D ℤ
inst✝⁸ : HasShift E ℤ
F : C ⥤ D
inst✝⁷ : F.CommShift ℤ
G : D ⥤ E
inst✝⁶ : G.CommShift ℤ
inst✝⁵ : Preadditive C
inst✝⁴ : Preadditive D
inst✝³ : F.Additive
F₁ F₂ : C ⥤ D
e : F₁ ≅ F₂
inst✝² : F₁.CommShift ℤ
inst✝¹ : F₂.CommShift ℤ
inst✝ : NatTrans.CommShift e.hom ℤ
⊢ ∀ {X Y : Triangle C} (f : X ⟶ Y),
    F₁.mapTriangle.map f ≫
        ((fun T =>
              (F₁.mapTriangle.obj T).isoMk (F₂.mapTriangle.obj T) (e.app T.obj₁) (e.app T.obj₂) (e.app T.obj₃) ⋯ ⋯ ⋯)
            Y).hom =
      ((fun T => (F₁.mapTriangle.obj T).isoMk (F₂.mapTriangle.obj T) (e.app T.obj₁) (e.app T.obj₂) (e.app T.obj₃) ⋯ ⋯ ⋯)
            X).hom ≫
        F₂.mapTriangle.map f
state_after: no goals
tactic: aesop_cat