Theorem: CategoryTheory.Pretriangulated.Triangle.shiftFunctor_map_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
n : ℤ
X✝ Y✝ : Triangle C
f : X✝ ⟶ Y✝
⊢ ((fun T =>
            mk (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₁)
              (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₂)
              (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₃ ≫ (shiftFunctorComm C 1 n).hom.app T.obj₁))
          X✝).mor₁ ≫
      (CategoryTheory.shiftFunctor C n).map f.hom₂ =
    (CategoryTheory.shiftFunctor C n).map f.hom₁ ≫
      ((fun T =>
            mk (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₁)
              (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₂)
              (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₃ ≫ (shiftFunctorComm C 1 n).hom.app T.obj₁))
          Y✝).mor₁
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
n : ℤ
X✝ Y✝ : Triangle C
f : X✝ ⟶ Y✝
⊢ (n.negOnePow • (CategoryTheory.shiftFunctor C n).map X✝.mor₁) ≫ (CategoryTheory.shiftFunctor C n).map f.hom₂ =
    (CategoryTheory.shiftFunctor C n).map f.hom₁ ≫ (n.negOnePow • (CategoryTheory.shiftFunctor C n).map Y✝.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
n : ℤ
X✝ Y✝ : Triangle C
f : X✝ ⟶ Y✝
⊢ (n.negOnePow • (CategoryTheory.shiftFunctor C n).map X✝.mor₁) ≫ (CategoryTheory.shiftFunctor C n).map f.hom₂ =
    (CategoryTheory.shiftFunctor C n).map f.hom₁ ≫ (n.negOnePow • (CategoryTheory.shiftFunctor C n).map Y✝.mor₁)
state_after: no goals
tactic: simp only [Linear.units_smul_comp, Linear.comp_units_smul, ← Functor.map_comp, f.comm₁]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
n : ℤ
X✝ Y✝ : Triangle C
f : X✝ ⟶ Y✝
⊢ ((fun T =>
            mk (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₁)
              (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₂)
              (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₃ ≫ (shiftFunctorComm C 1 n).hom.app T.obj₁))
          X✝).mor₂ ≫
      (CategoryTheory.shiftFunctor C n).map f.hom₃ =
    (CategoryTheory.shiftFunctor C n).map f.hom₂ ≫
      ((fun T =>
            mk (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₁)
              (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₂)
              (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₃ ≫ (shiftFunctorComm C 1 n).hom.app T.obj₁))
          Y✝).mor₂
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
n : ℤ
X✝ Y✝ : Triangle C
f : X✝ ⟶ Y✝
⊢ (n.negOnePow • (CategoryTheory.shiftFunctor C n).map X✝.mor₂) ≫ (CategoryTheory.shiftFunctor C n).map f.hom₃ =
    (CategoryTheory.shiftFunctor C n).map f.hom₂ ≫ (n.negOnePow • (CategoryTheory.shiftFunctor C n).map Y✝.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
n : ℤ
X✝ Y✝ : Triangle C
f : X✝ ⟶ Y✝
⊢ (n.negOnePow • (CategoryTheory.shiftFunctor C n).map X✝.mor₂) ≫ (CategoryTheory.shiftFunctor C n).map f.hom₃ =
    (CategoryTheory.shiftFunctor C n).map f.hom₂ ≫ (n.negOnePow • (CategoryTheory.shiftFunctor C n).map Y✝.mor₂)
state_after: no goals
tactic: simp only [Linear.units_smul_comp, Linear.comp_units_smul, ← Functor.map_comp, f.comm₂]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
n : ℤ
X✝ Y✝ : Triangle C
f : X✝ ⟶ Y✝
⊢ ((fun T =>
            mk (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₁)
              (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₂)
              (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₃ ≫ (shiftFunctorComm C 1 n).hom.app T.obj₁))
          X✝).mor₃ ≫
      (CategoryTheory.shiftFunctor C 1).map ((CategoryTheory.shiftFunctor C n).map f.hom₁) =
    (CategoryTheory.shiftFunctor C n).map f.hom₃ ≫
      ((fun T =>
            mk (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₁)
              (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₂)
              (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₃ ≫ (shiftFunctorComm C 1 n).hom.app T.obj₁))
          Y✝).mor₃
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
n : ℤ
X✝ Y✝ : Triangle C
f : X✝ ⟶ Y✝
⊢ (n.negOnePow • (CategoryTheory.shiftFunctor C n).map X✝.mor₃ ≫ (shiftFunctorComm C 1 n).hom.app X✝.obj₁) ≫
      (CategoryTheory.shiftFunctor C 1).map ((CategoryTheory.shiftFunctor C n).map f.hom₁) =
    (CategoryTheory.shiftFunctor C n).map f.hom₃ ≫
      (n.negOnePow • (CategoryTheory.shiftFunctor C n).map Y✝.mor₃ ≫ (shiftFunctorComm C 1 n).hom.app Y✝.obj₁)
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
n : ℤ
X✝ Y✝ : Triangle C
f : X✝ ⟶ Y✝
⊢ (n.negOnePow • (CategoryTheory.shiftFunctor C n).map X✝.mor₃ ≫ (shiftFunctorComm C 1 n).hom.app X✝.obj₁) ≫
      (CategoryTheory.shiftFunctor C 1).map ((CategoryTheory.shiftFunctor C n).map f.hom₁) =
    (CategoryTheory.shiftFunctor C n).map f.hom₃ ≫
      (n.negOnePow • (CategoryTheory.shiftFunctor C n).map Y✝.mor₃ ≫ (shiftFunctorComm C 1 n).hom.app Y✝.obj₁)
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
n : ℤ
X✝ Y✝ : Triangle C
f : X✝ ⟶ Y✝
⊢ n.negOnePow •
      (CategoryTheory.shiftFunctor C n).map X✝.mor₃ ≫
        (shiftFunctorComm C 1 n).hom.app X✝.obj₁ ≫
          (CategoryTheory.shiftFunctor C 1).map ((CategoryTheory.shiftFunctor C n).map f.hom₁) =
    n.negOnePow •
      (CategoryTheory.shiftFunctor C n).map X✝.mor₃ ≫
        (CategoryTheory.shiftFunctor C n).map ((CategoryTheory.shiftFunctor C 1).map f.hom₁) ≫
          (shiftFunctorComm C 1 n).hom.app Y✝.obj₁
tactic: rw [Linear.units_smul_comp, Linear.comp_units_smul, ← Functor.map_comp_assoc, ← f.comm₃,
          Functor.map_comp, assoc, assoc]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
n : ℤ
X✝ Y✝ : Triangle C
f : X✝ ⟶ Y✝
⊢ n.negOnePow •
      (CategoryTheory.shiftFunctor C n).map X✝.mor₃ ≫
        (shiftFunctorComm C 1 n).hom.app X✝.obj₁ ≫
          (CategoryTheory.shiftFunctor C 1).map ((CategoryTheory.shiftFunctor C n).map f.hom₁) =
    n.negOnePow •
      (CategoryTheory.shiftFunctor C n).map X✝.mor₃ ≫
        (CategoryTheory.shiftFunctor C n).map ((CategoryTheory.shiftFunctor C 1).map f.hom₁) ≫
          (shiftFunctorComm C 1 n).hom.app Y✝.obj₁
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
n : ℤ
X✝ Y✝ : Triangle C
f : X✝ ⟶ Y✝
⊢ n.negOnePow •
      (CategoryTheory.shiftFunctor C n).map X✝.mor₃ ≫
        (shiftFunctorComm C 1 n).hom.app X✝.obj₁ ≫
          (CategoryTheory.shiftFunctor C 1).map ((CategoryTheory.shiftFunctor C n).map f.hom₁) =
    n.negOnePow •
      (CategoryTheory.shiftFunctor C n).map X✝.mor₃ ≫
        (shiftFunctorComm C 1 n).hom.app X✝.obj₁ ≫
          (CategoryTheory.shiftFunctor C n ⋙ CategoryTheory.shiftFunctor C 1).map f.hom₁
tactic: erw [(shiftFunctorComm C 1 n).hom.naturality]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
inst✝¹ : HasShift C ℤ
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
n : ℤ
X✝ Y✝ : Triangle C
f : X✝ ⟶ Y✝
⊢ n.negOnePow •
      (CategoryTheory.shiftFunctor C n).map X✝.mor₃ ≫
        (shiftFunctorComm C 1 n).hom.app X✝.obj₁ ≫
          (CategoryTheory.shiftFunctor C 1).map ((CategoryTheory.shiftFunctor C n).map f.hom₁) =
    n.negOnePow •
      (CategoryTheory.shiftFunctor C n).map X✝.mor₃ ≫
        (shiftFunctorComm C 1 n).hom.app X✝.obj₁ ≫
          (CategoryTheory.shiftFunctor C n ⋙ CategoryTheory.shiftFunctor C 1).map f.hom₁
state_after: no goals
tactic: rfl