Theorem: CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero_hom_app_hom₃
File: Mathlib/CategoryTheory/Triangulated/TriangleShift.lean

Proof steps:
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
T : Triangle C
⊢ ((shiftFunctor C 0).obj T).mor₁ ≫ ((CategoryTheory.shiftFunctorZero C ℤ).app T.obj₂).hom =
    ((CategoryTheory.shiftFunctorZero C ℤ).app T.obj₁).hom ≫ ((𝟭 (Triangle C)).obj T).mor₁
state_after: no goals
tactic: aesop_cat
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
T : Triangle C
⊢ ((shiftFunctor C 0).obj T).mor₂ ≫ ((CategoryTheory.shiftFunctorZero C ℤ).app T.obj₃).hom =
    ((CategoryTheory.shiftFunctorZero C ℤ).app T.obj₂).hom ≫ ((𝟭 (Triangle C)).obj T).mor₂
state_after: no goals
tactic: aesop_cat
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
T : Triangle C
⊢ ((shiftFunctor C 0).obj T).mor₃ ≫
      (CategoryTheory.shiftFunctor C 1).map ((CategoryTheory.shiftFunctorZero C ℤ).app T.obj₁).hom =
    ((CategoryTheory.shiftFunctorZero C ℤ).app T.obj₃).hom ≫ ((𝟭 (Triangle C)).obj T).mor₃
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
T : Triangle C
⊢ (1 • (CategoryTheory.shiftFunctor C 0).map T.mor₃ ≫ (shiftFunctorComm C 1 0).hom.app T.obj₁) ≫
      (CategoryTheory.shiftFunctor C 1).map ((CategoryTheory.shiftFunctorZero C ℤ).hom.app T.obj₁) =
    (CategoryTheory.shiftFunctorZero C ℤ).hom.app T.obj₃ ≫ T.mor₃
tactic: dsimp
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
T : Triangle C
⊢ (1 • (CategoryTheory.shiftFunctor C 0).map T.mor₃ ≫ (shiftFunctorComm C 1 0).hom.app T.obj₁) ≫
      (CategoryTheory.shiftFunctor C 1).map ((CategoryTheory.shiftFunctorZero C ℤ).hom.app T.obj₁) =
    (CategoryTheory.shiftFunctorZero C ℤ).hom.app T.obj₃ ≫ T.mor₃
state_after: no goals
tactic: simp only [one_smul, assoc, shiftFunctorComm_zero_hom_app,
          ← Functor.map_comp, Iso.inv_hom_id_app, Functor.id_obj, Functor.map_id,
          comp_id, NatTrans.naturality, Functor.id_map]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
⊢ ∀ {X Y : Triangle C} (f : X ⟶ Y),
    (shiftFunctor C 0).map f ≫
        ((fun T =>
              ((shiftFunctor C 0).obj T).isoMk ((𝟭 (Triangle C)).obj T)
                ((CategoryTheory.shiftFunctorZero C ℤ).app T.obj₁) ((CategoryTheory.shiftFunctorZero C ℤ).app T.obj₂)
                ((CategoryTheory.shiftFunctorZero C ℤ).app T.obj₃) ⋯ ⋯ ⋯)
            Y).hom =
      ((fun T =>
              ((shiftFunctor C 0).obj T).isoMk ((𝟭 (Triangle C)).obj T)
                ((CategoryTheory.shiftFunctorZero C ℤ).app T.obj₁) ((CategoryTheory.shiftFunctorZero C ℤ).app T.obj₂)
                ((CategoryTheory.shiftFunctorZero C ℤ).app T.obj₃) ⋯ ⋯ ⋯)
            X).hom ≫
        (𝟭 (Triangle C)).map f
state_after: no goals
tactic: aesop_cat