Theorem: CategoryTheory.Pretriangulated.Opposite.contractibleTriangleIso_hom_hom₃
File: Mathlib/CategoryTheory/Triangulated/Opposite.lean

Proof steps:
state_before: C : Type u_1
inst✝⁵ : Category.{?u.268023, u_1} C
inst✝⁴ : HasShift C ℤ
inst✝³ : HasZeroObject C
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
X : Cᵒᵖ
⊢ IsZero ((triangleOpEquivalence C).functor.obj (Opposite.op (contractibleTriangle (Opposite.unop X)).invRotate)).obj₃
state_after: C : Type u_1
inst✝⁵ : Category.{?u.268023, u_1} C
inst✝⁴ : HasShift C ℤ
inst✝³ : HasZeroObject C
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
X : Cᵒᵖ
⊢ IsZero (Opposite.op ((shiftFunctor C (-1)).obj 0))
tactic: dsimp
state_before: C : Type u_1
inst✝⁵ : Category.{?u.268023, u_1} C
inst✝⁴ : HasShift C ℤ
inst✝³ : HasZeroObject C
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
X : Cᵒᵖ
⊢ IsZero (Opposite.op ((shiftFunctor C (-1)).obj 0))
state_after: C : Type u_1
inst✝⁵ : Category.{?u.268023, u_1} C
inst✝⁴ : HasShift C ℤ
inst✝³ : HasZeroObject C
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
X : Cᵒᵖ
⊢ 𝟙 (Opposite.op ((shiftFunctor C (-1)).obj 0)) = 0
tactic: rw [IsZero.iff_id_eq_zero]
state_before: C : Type u_1
inst✝⁵ : Category.{?u.268023, u_1} C
inst✝⁴ : HasShift C ℤ
inst✝³ : HasZeroObject C
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
X : Cᵒᵖ
⊢ 𝟙 (Opposite.op ((shiftFunctor C (-1)).obj 0)) = 0
state_after: C : Type u_1
inst✝⁵ : Category.{?u.268023, u_1} C
inst✝⁴ : HasShift C ℤ
inst✝³ : HasZeroObject C
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
X : Cᵒᵖ
⊢ (𝟙 ((shiftFunctor C (-1)).obj 0)).op = 0
tactic: change (𝟙 ((0 : C)⟦(-1 : ℤ)⟧)).op = 0
state_before: C : Type u_1
inst✝⁵ : Category.{?u.268023, u_1} C
inst✝⁴ : HasShift C ℤ
inst✝³ : HasZeroObject C
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
X : Cᵒᵖ
⊢ (𝟙 ((shiftFunctor C (-1)).obj 0)).op = 0
state_after: no goals
tactic: rw [← Functor.map_id, id_zero, Functor.map_zero, op_zero]
state_before: C : Type u_1
inst✝⁵ : Category.{?u.268023, u_1} C
inst✝⁴ : HasShift C ℤ
inst✝³ : HasZeroObject C
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
X : Cᵒᵖ
⊢ (contractibleTriangle X).mor₁ ≫ (Iso.refl (contractibleTriangle X).obj₂).hom =
    (Iso.refl (contractibleTriangle X).obj₁).hom ≫
      ((triangleOpEquivalence C).functor.obj (Opposite.op (contractibleTriangle (Opposite.unop X)).invRotate)).mor₁
state_after: no goals
tactic: aesop_cat
state_before: C : Type u_1
inst✝⁵ : Category.{?u.268023, u_1} C
inst✝⁴ : HasShift C ℤ
inst✝³ : HasZeroObject C
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
X : Cᵒᵖ
⊢ (contractibleTriangle X).mor₂ ≫ (⋯.iso ⋯).hom =
    (Iso.refl (contractibleTriangle X).obj₂).hom ≫
      ((triangleOpEquivalence C).functor.obj (Opposite.op (contractibleTriangle (Opposite.unop X)).invRotate)).mor₂
state_after: no goals
tactic: aesop_cat
state_before: C : Type u_1
inst✝⁵ : Category.{?u.268023, u_1} C
inst✝⁴ : HasShift C ℤ
inst✝³ : HasZeroObject C
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
X : Cᵒᵖ
⊢ (contractibleTriangle X).mor₃ ≫ (shiftFunctor Cᵒᵖ 1).map (Iso.refl (contractibleTriangle X).obj₁).hom =
    (⋯.iso ⋯).hom ≫
      ((triangleOpEquivalence C).functor.obj (Opposite.op (contractibleTriangle (Opposite.unop X)).invRotate)).mor₃
state_after: no goals
tactic: aesop_cat