Module: Mathlib.CategoryTheory.Triangulated.Triangulated

Goal state before:
pp: C : Type u_1
inst✝⁵ : Category.{v_1, u_1} C
inst✝⁴ : Preadditive C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : X₂ ⟶ Z₁₂
w₁₂ : Z₁₂ ⟶ (shiftFunctor C 1).obj X₁
h₁₂ : Triangle.mk u₁₂ v₁₂ w₁₂ ∈ distinguishedTriangles
v₂₃ : X₃ ⟶ Z₂₃
w₂₃ : Z₂₃ ⟶ (shiftFunctor C 1).obj X₂
h₂₃ : Triangle.mk u₂₃ v₂₃ w₂₃ ∈ distinguishedTriangles
v₁₃ : X₃ ⟶ Z₁₃
w₁₃ : Z₁₃ ⟶ (shiftFunctor C 1).obj X₁
h₁₃ : Triangle.mk u₁₃ v₁₃ w₁₃ ∈ distinguishedTriangles
h : Octahedron comm h₁₂ h₂₃ h₁₃
X₁' X₂' X₃' Z₁₂' Z₂₃' Z₁₃' : C
u₁₂' : X₁' ⟶ X₂'
u₂₃' : X₂' ⟶ X₃'
u₁₃' : X₁' ⟶ X₃'
comm' : u₁₂' ≫ u₂₃' = u₁₃'
e₁ : X₁ ≅ X₁'
e₂ : X₂ ≅ X₂'
e₃ : X₃ ≅ X₃'
comm₁₂ : u₁₂ ≫ e₂.hom = e₁.hom ≫ u₁₂'
comm₂₃ : u₂₃ ≫ e₃.hom = e₂.hom ≫ u₂₃'
v₁₂' : X₂' ⟶ Z₁₂'
w₁₂' : Z₁₂' ⟶ (shiftFunctor C 1).obj X₁'
h₁₂' : Triangle.mk u₁₂' v₁₂' w₁₂' ∈ distinguishedTriangles
v₂₃' : X₃' ⟶ Z₂₃'
w₂₃' : Z₂₃' ⟶ (shiftFunctor C 1).obj X₂'
h₂₃' : Triangle.mk u₂₃' v₂₃' w₂₃' ∈ distinguishedTriangles
v₁₃' : X₃' ⟶ Z₁₃'
w₁₃' : Z₁₃' ⟶ (shiftFunctor C 1).obj X₁'
h₁₃' : Triangle.mk u₁₃' v₁₃' w₁₃' ∈ distinguishedTriangles
H : Octahedron comm' h₁₂' h₂₃' h₁₃'
iso₁₂ : Triangle.mk u₁₂ v₁₂ w₁₂ ≅ Triangle.mk u₁₂' v₁₂' w₁₂' :=
  isoTriangleOfIso₁₂ (Triangle.mk u₁₂ v₁₂ w₁₂) (Triangle.mk u₁₂' v₁₂' w₁₂') h₁₂ h₁₂' e₁ e₂ comm₁₂
iso₂₃ : Triangle.mk u₂₃ v₂₃ w₂₃ ≅ Triangle.mk u₂₃' v₂₃' w₂₃' :=
  isoTriangleOfIso₁₂ (Triangle.mk u₂₃ v₂₃ w₂₃) (Triangle.mk u₂₃' v₂₃' w₂₃') h₂₃ h₂₃' e₂ e₃ comm₂₃
iso₁₃ : Triangle.mk u₁₃ v₁₃ w₁₃ ≅ Triangle.mk u₁₃' v₁₃' w₁₃' :=
  isoTriangleOfIso₁₂ (Triangle.mk u₁₃ v₁₃ w₁₃) (Triangle.mk u₁₃' v₁₃' w₁₃') h₁₃ h₁₃' e₁ e₃ ⋯
eq₁₂ : (Triangle.mk u₁₂ v₁₂ w₁₂).mor₂ ≫ iso₁₂.hom.hom₃ = iso₁₂.hom.hom₂ ≫ (Triangle.mk u₁₂' v₁₂' w₁₂').mor₂
eq₁₂' :
  (Triangle.mk u₁₂ v₁₂ w₁₂).mor₃ ≫ (shiftFunctor C 1).map iso₁₂.hom.hom₁ =
    iso₁₂.hom.hom₃ ≫ (Triangle.mk u₁₂' v₁₂' w₁₂').mor₃
eq₁₃ : (Triangle.mk u₁₃ v₁₃ w₁₃).mor₂ ≫ iso₁₃.hom.hom₃ = iso₁₃.hom.hom₂ ≫ (Triangle.mk u₁₃' v₁₃' w₁₃').mor₂
eq₁₃' :
  (Triangle.mk u₁₃ v₁₃ w₁₃).mor₃ ≫ (shiftFunctor C 1).map iso₁₃.hom.hom₁ =
    iso₁₃.hom.hom₃ ≫ (Triangle.mk u₁₃' v₁₃' w₁₃').mor₃
eq₂₃ : (Triangle.mk u₂₃ v₂₃ w₂₃).mor₂ ≫ iso₂₃.hom.hom₃ = iso₂₃.hom.hom₂ ≫ (Triangle.mk u₂₃' v₂₃' w₂₃').mor₂
eq₂₃' :
  (Triangle.mk u₂₃ v₂₃ w₂₃).mor₃ ≫ (shiftFunctor C 1).map iso₂₃.hom.hom₁ =
    iso₂₃.hom.hom₃ ≫ (Triangle.mk u₂₃' v₂₃' w₂₃').mor₃
rel₁₂ :
  (Triangle.mk u₁₂' v₁₂' w₁₂').mor₂ ≫ H.triangleMorphism₁.hom₃ =
    H.triangleMorphism₁.hom₂ ≫ (Triangle.mk u₁₃' v₁₃' w₁₃').mor₂
rel₁₃ :
  (Triangle.mk u₁₂' v₁₂' w₁₂').mor₃ ≫ (shiftFunctor C 1).map H.triangleMorphism₁.hom₁ =
    H.triangleMorphism₁.hom₃ ≫ (Triangle.mk u₁₃' v₁₃' w₁₃').mor₃
⊢ Octahedron comm h₁₂ h₂₃ h₁₃

Tactic:
have rel₂₂ := H.triangleMorphism₂.comm₂

Goal state after:
C : Type u_1
inst✝⁵ : Category.{v_1, u_1} C
inst✝⁴ : Preadditive C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : X₂ ⟶ Z₁₂
w₁₂ : Z₁₂ ⟶ (shiftFunctor C 1).obj X₁
h₁₂ : Triangle.mk u₁₂ v₁₂ w₁₂ ∈ distinguishedTriangles
v₂₃ : X₃ ⟶ Z₂₃
w₂₃ : Z₂₃ ⟶ (shiftFunctor C 1).obj X₂
h₂₃ : Triangle.mk u₂₃ v₂₃ w₂₃ ∈ distinguishedTriangles
v₁₃ : X₃ ⟶ Z₁₃
w₁₃ : Z₁₃ ⟶ (shiftFunctor C 1).obj X₁
h₁₃ : Triangle.mk u₁₃ v₁₃ w₁₃ ∈ distinguishedTriangles
h : Octahedron comm h₁₂ h₂₃ h₁₃
X₁' X₂' X₃' Z₁₂' Z₂₃' Z₁₃' : C
u₁₂' : X₁' ⟶ X₂'
u₂₃' : X₂' ⟶ X₃'
u₁₃' : X₁' ⟶ X₃'
comm' : u₁₂' ≫ u₂₃' = u₁₃'
e₁ : X₁ ≅ X₁'
e₂ : X₂ ≅ X₂'
e₃ : X₃ ≅ X₃'
comm₁₂ : u₁₂ ≫ e₂.hom = e₁.hom ≫ u₁₂'
comm₂₃ : u₂₃ ≫ e₃.hom = e₂.hom ≫ u₂₃'
v₁₂' : X₂' ⟶ Z₁₂'
w₁₂' : Z₁₂' ⟶ (shiftFunctor C 1).obj X₁'
h₁₂' : Triangle.mk u₁₂' v₁₂' w₁₂' ∈ distinguishedTriangles
v₂₃' : X₃' ⟶ Z₂₃'
w₂₃' : Z₂₃' ⟶ (shiftFunctor C 1).obj X₂'
h₂₃' : Triangle.mk u₂₃' v₂₃' w₂₃' ∈ distinguishedTriangles
v₁₃' : X₃' ⟶ Z₁₃'
w₁₃' : Z₁₃' ⟶ (shiftFunctor C 1).obj X₁'
h₁₃' : Triangle.mk u₁₃' v₁₃' w₁₃' ∈ distinguishedTriangles
H : Octahedron comm' h₁₂' h₂₃' h₁₃'
iso₁₂ : Triangle.mk u₁₂ v₁₂ w₁₂ ≅ Triangle.mk u₁₂' v₁₂' w₁₂' :=
  isoTriangleOfIso₁₂ (Triangle.mk u₁₂ v₁₂ w₁₂) (Triangle.mk u₁₂' v₁₂' w₁₂') h₁₂ h₁₂' e₁ e₂ comm₁₂
iso₂₃ : Triangle.mk u₂₃ v₂₃ w₂₃ ≅ Triangle.mk u₂₃' v₂₃' w₂₃' :=
  isoTriangleOfIso₁₂ (Triangle.mk u₂₃ v₂₃ w₂₃) (Triangle.mk u₂₃' v₂₃' w₂₃') h₂₃ h₂₃' e₂ e₃ comm₂₃
iso₁₃ : Triangle.mk u₁₃ v₁₃ w₁₃ ≅ Triangle.mk u₁₃' v₁₃' w₁₃' :=
  isoTriangleOfIso₁₂ (Triangle.mk u₁₃ v₁₃ w₁₃) (Triangle.mk u₁₃' v₁₃' w₁₃') h₁₃ h₁₃' e₁ e₃ ⋯
eq₁₂ : (Triangle.mk u₁₂ v₁₂ w₁₂).mor₂ ≫ iso₁₂.hom.hom₃ = iso₁₂.hom.hom₂ ≫ (Triangle.mk u₁₂' v₁₂' w₁₂').mor₂
eq₁₂' :
  (Triangle.mk u₁₂ v₁₂ w₁₂).mor₃ ≫ (shiftFunctor C 1).map iso₁₂.hom.hom₁ =
    iso₁₂.hom.hom₃ ≫ (Triangle.mk u₁₂' v₁₂' w₁₂').mor₃
eq₁₃ : (Triangle.mk u₁₃ v₁₃ w₁₃).mor₂ ≫ iso₁₃.hom.hom₃ = iso₁₃.hom.hom₂ ≫ (Triangle.mk u₁₃' v₁₃' w₁₃').mor₂
eq₁₃' :
  (Triangle.mk u₁₃ v₁₃ w₁₃).mor₃ ≫ (shiftFunctor C 1).map iso₁₃.hom.hom₁ =
    iso₁₃.hom.hom₃ ≫ (Triangle.mk u₁₃' v₁₃' w₁₃').mor₃
eq₂₃ : (Triangle.mk u₂₃ v₂₃ w₂₃).mor₂ ≫ iso₂₃.hom.hom₃ = iso₂₃.hom.hom₂ ≫ (Triangle.mk u₂₃' v₂₃' w₂₃').mor₂
eq₂₃' :
  (Triangle.mk u₂₃ v₂₃ w₂₃).mor₃ ≫ (shiftFunctor C 1).map iso₂₃.hom.hom₁ =
    iso₂₃.hom.hom₃ ≫ (Triangle.mk u₂₃' v₂₃' w₂₃').mor₃
rel₁₂ :
  (Triangle.mk u₁₂' v₁₂' w₁₂').mor₂ ≫ H.triangleMorphism₁.hom₃ =
    H.triangleMorphism₁.hom₂ ≫ (Triangle.mk u₁₃' v₁₃' w₁₃').mor₂
rel₁₃ :
  (Triangle.mk u₁₂' v₁₂' w₁₂').mor₃ ≫ (shiftFunctor C 1).map H.triangleMorphism₁.hom₁ =
    H.triangleMorphism₁.hom₃ ≫ (Triangle.mk u₁₃' v₁₃' w₁₃').mor₃
rel₂₂ :
  (Triangle.mk u₁₃' v₁₃' w₁₃').mor₂ ≫ H.triangleMorphism₂.hom₃ =
    H.triangleMorphism₂.hom₂ ≫ (Triangle.mk u₂₃' v₂₃' w₂₃').mor₂
⊢ Octahedron comm h₁₂ h₂₃ h₁₃