awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Module: Mathlib.CategoryTheory.Triangulated.Triangulated
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasShift.{v_1, u_1, 0} C ℤ
inst_4 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_5 : Pretriangulated.{v_1, u_1} C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₂
h₁₂ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₂ u₁₂ w₁₂)
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₂₃
h₂₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₂₃ u₂₃ w₂₃)
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₃
h₁₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₃ u₁₃ w₁₃)
h : Octahedron' comm h₁₂ h₂₃ h₁₃
rw : u₁₃ = u₁₂ ≫ u₂₃
rw₁ rw₂ : u₁₃ = u₁₃
⊢ u₁₃ ≫ 𝟙 X₃ = u₁₂ ≫ u₂₃

Tactic:
rw [comp_id, comm]

Premises used: CategoryTheory.Category.comp_id
-- Module: Mathlib.CategoryTheory.Triangulated.Triangulated
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasShift.{v_1, u_1, 0} C ℤ
inst_4 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_5 : Pretriangulated.{v_1, u_1} C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₂
h₁₂ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₂ u₁₂ w₁₂)
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₂₃
h₂₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₂₃ u₂₃ w₂₃)
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₃
h₁₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₃ u₁₃ w₁₃)
h : Octahedron' comm h₁₂ h₂₃ h₁₃
dsimp : w₁₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) h.m₃ = 𝟙 X₃ ≫ w₂₃
⊢ (Triangle.mk v₁₃ u₁₃ w₁₃).mor₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) h.m₃ = 𝟙 X₃ ≫ (Triangle.mk v₂₃ u₂₃ w₂₃).mor₃

Tactic:
dsimp
-- Module: Mathlib.CategoryTheory.Triangulated.Triangulated
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasShift.{v_1, u_1, 0} C ℤ
inst_4 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_5 : Pretriangulated.{v_1, u_1} C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₂
h₁₂ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₂ u₁₂ w₁₂)
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₂₃
h₂₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₂₃ u₂₃ w₂₃)
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₃
h₁₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₃ u₁₃ w₁₃)
h : Octahedron' comm h₁₂ h₂₃ h₁₃
rw : w₁₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) h.m₃ = w₂₃
rw₁ rw₂ : w₂₃ = w₂₃
⊢ w₁₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) h.m₃ = 𝟙 X₃ ≫ w₂₃

Tactic:
rw [id_comp, h.comm₃]

Premises used: CategoryTheory.Triangulated.Octahedron'.comm₃, CategoryTheory.Category.id_comp
-- Module: Mathlib.CategoryTheory.Triangulated.Triangulated
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasShift.{v_1, u_1, 0} C ℤ
inst_4 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_5 : Pretriangulated.{v_1, u_1} C
inst_6 : IsTriangulated.{v_1, u_1} C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₂
h₁₂ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₂ u₁₂ w₁₂)
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₂₃
h₂₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₂₃ u₂₃ w₂₃)
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₃
h₁₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₃ u₁₃ w₁₃)
o : Octahedron comm ⋯ ⋯ ⋯ := someOctahedron comm ⋯ ⋯ ⋯
m₁ : Z₁₂ ⟶ Z₁₃ :=
  Iso.inv (shiftShiftNeg Z₁₂ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₁ ≫ Iso.hom (shiftShiftNeg Z₁₃ 1)
m₃ : Z₁₃ ⟶ Z₂₃ :=
  Iso.inv (shiftShiftNeg Z₁₃ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₃ ≫ Iso.hom (shiftShiftNeg Z₂₃ 1)
⊢ (Triangle.mk v₁₂ u₁₂ w₁₂).mor₃ ≫ o.m₁ = u₂₃ ≫ (Triangle.mk v₁₃ u₁₃ w₁₃).mor₃

Tactic:
have eq₁ := o.comm₁
-- Module: Mathlib.CategoryTheory.Triangulated.Triangulated
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasShift.{v_1, u_1, 0} C ℤ
inst_4 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_5 : Pretriangulated.{v_1, u_1} C
inst_6 : IsTriangulated.{v_1, u_1} C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₂
h₁₂ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₂ u₁₂ w₁₂)
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₂₃
h₂₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₂₃ u₂₃ w₂₃)
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₃
h₁₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₃ u₁₃ w₁₃)
o : Octahedron comm ⋯ ⋯ ⋯ := someOctahedron comm ⋯ ⋯ ⋯
m₁ : Z₁₂ ⟶ Z₁₃ :=
  Iso.inv (shiftShiftNeg Z₁₂ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₁ ≫ Iso.hom (shiftShiftNeg Z₁₃ 1)
m₃ : Z₁₃ ⟶ Z₂₃ :=
  Iso.inv (shiftShiftNeg Z₁₃ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₃ ≫ Iso.hom (shiftShiftNeg Z₂₃ 1)
eq₁ : (Triangle.mk v₁₂ u₁₂ w₁₂).mor₃ ≫ o.m₁ = u₂₃ ≫ (Triangle.mk v₁₃ u₁₃ w₁₃).mor₃
⊢ o.m₁ ≫ (-Functor.map (shiftFunctor C (A := ℤ) 1) (Triangle.mk v₁₃ u₁₃ w₁₃).mor₁) =
    -Functor.map (shiftFunctor C (A := ℤ) 1) (Triangle.mk v₁₂ u₁₂ w₁₂).mor₁

Tactic:
have eq₂ := o.comm₂
-- Module: Mathlib.CategoryTheory.Triangulated.Triangulated
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasShift.{v_1, u_1, 0} C ℤ
inst_4 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_5 : Pretriangulated.{v_1, u_1} C
inst_6 : IsTriangulated.{v_1, u_1} C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₂
h₁₂ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₂ u₁₂ w₁₂)
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₂₃
h₂₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₂₃ u₂₃ w₂₃)
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₃
h₁₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₃ u₁₃ w₁₃)
o : Octahedron comm ⋯ ⋯ ⋯ := someOctahedron comm ⋯ ⋯ ⋯
m₁ : Z₁₂ ⟶ Z₁₃ :=
  Iso.inv (shiftShiftNeg Z₁₂ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₁ ≫ Iso.hom (shiftShiftNeg Z₁₃ 1)
m₃ : Z₁₃ ⟶ Z₂₃ :=
  Iso.inv (shiftShiftNeg Z₁₃ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₃ ≫ Iso.hom (shiftShiftNeg Z₂₃ 1)
eq₁ : (Triangle.mk v₁₂ u₁₂ w₁₂).mor₃ ≫ o.m₁ = u₂₃ ≫ (Triangle.mk v₁₃ u₁₃ w₁₃).mor₃
eq₂ :
  o.m₁ ≫ (-Functor.map (shiftFunctor C (A := ℤ) 1) (Triangle.mk v₁₃ u₁₃ w₁₃).mor₁) =
    -Functor.map (shiftFunctor C (A := ℤ) 1) (Triangle.mk v₁₂ u₁₂ w₁₂).mor₁
⊢ (Triangle.mk v₁₃ u₁₃ w₁₃).mor₃ ≫ o.m₃ = (Triangle.mk v₂₃ u₂₃ w₂₃).mor₃

Tactic:
have eq₃ := o.comm₃
-- Module: Mathlib.CategoryTheory.Triangulated.Triangulated
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasShift.{v_1, u_1, 0} C ℤ
inst_4 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_5 : Pretriangulated.{v_1, u_1} C
inst_6 : IsTriangulated.{v_1, u_1} C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₂
h₁₂ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₂ u₁₂ w₁₂)
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₂₃
h₂₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₂₃ u₂₃ w₂₃)
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₃
h₁₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₃ u₁₃ w₁₃)
o : Octahedron comm ⋯ ⋯ ⋯ := someOctahedron comm ⋯ ⋯ ⋯
m₁ : Z₁₂ ⟶ Z₁₃ :=
  Iso.inv (shiftShiftNeg Z₁₂ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₁ ≫ Iso.hom (shiftShiftNeg Z₁₃ 1)
m₃ : Z₁₃ ⟶ Z₂₃ :=
  Iso.inv (shiftShiftNeg Z₁₃ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₃ ≫ Iso.hom (shiftShiftNeg Z₂₃ 1)
eq₁ : (Triangle.mk v₁₂ u₁₂ w₁₂).mor₃ ≫ o.m₁ = u₂₃ ≫ (Triangle.mk v₁₃ u₁₃ w₁₃).mor₃
eq₂ :
  o.m₁ ≫ (-Functor.map (shiftFunctor C (A := ℤ) 1) (Triangle.mk v₁₃ u₁₃ w₁₃).mor₁) =
    -Functor.map (shiftFunctor C (A := ℤ) 1) (Triangle.mk v₁₂ u₁₂ w₁₂).mor₁
eq₃ : (Triangle.mk v₁₃ u₁₃ w₁₃).mor₃ ≫ o.m₃ = (Triangle.mk v₂₃ u₂₃ w₂₃).mor₃
⊢ (-Functor.map (shiftFunctor C (A := ℤ) 1) (Triangle.mk v₁₃ u₁₃ w₁₃).mor₁) ≫
      Functor.map (shiftFunctor C (A := ℤ) 1) u₁₂ =
    o.m₃ ≫ (-Functor.map (shiftFunctor C (A := ℤ) 1) (Triangle.mk v₂₃ u₂₃ w₂₃).mor₁)

Tactic:
have eq₄ := o.comm₄
-- Module: Mathlib.CategoryTheory.Triangulated.Triangulated
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasShift.{v_1, u_1, 0} C ℤ
inst_4 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_5 : Pretriangulated.{v_1, u_1} C
inst_6 : IsTriangulated.{v_1, u_1} C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₂
h₁₂ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₂ u₁₂ w₁₂)
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₂₃
h₂₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₂₃ u₂₃ w₂₃)
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₃
h₁₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₃ u₁₃ w₁₃)
o : Octahedron comm ⋯ ⋯ ⋯ := someOctahedron comm ⋯ ⋯ ⋯
m₁ : Z₁₂ ⟶ Z₁₃ :=
  Iso.inv (shiftShiftNeg Z₁₂ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₁ ≫ Iso.hom (shiftShiftNeg Z₁₃ 1)
m₃ : Z₁₃ ⟶ Z₂₃ :=
  Iso.inv (shiftShiftNeg Z₁₃ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₃ ≫ Iso.hom (shiftShiftNeg Z₂₃ 1)
eq₁ : w₁₂ ≫ o.m₁ = u₂₃ ≫ w₁₃
eq₂ : o.m₁ ≫ (-Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃) = -Functor.map (shiftFunctor C (A := ℤ) 1) v₁₂
eq₃ : w₁₃ ≫ o.m₃ = w₂₃
eq₄ :
  (-Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃) ≫ Functor.map (shiftFunctor C (A := ℤ) 1) u₁₂ =
    o.m₃ ≫ (-Functor.map (shiftFunctor C (A := ℤ) 1) v₂₃)
⊢ o.m₁ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃ = Functor.map (shiftFunctor C (A := ℤ) 1) v₁₂

Tactic:
rw [comp_neg, neg_inj] at eq₂

Premises used: CategoryTheory.Preadditive.comp_neg, neg_inj
-- Module: Mathlib.CategoryTheory.Triangulated.Triangulated
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasShift.{v_1, u_1, 0} C ℤ
inst_4 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_5 : Pretriangulated.{v_1, u_1} C
inst_6 : IsTriangulated.{v_1, u_1} C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₂
h₁₂ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₂ u₁₂ w₁₂)
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₂₃
h₂₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₂₃ u₂₃ w₂₃)
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₃
h₁₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₃ u₁₃ w₁₃)
o : Octahedron comm ⋯ ⋯ ⋯ := someOctahedron comm ⋯ ⋯ ⋯
m₁ : Z₁₂ ⟶ Z₁₃ :=
  Iso.inv (shiftShiftNeg Z₁₂ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₁ ≫ Iso.hom (shiftShiftNeg Z₁₃ 1)
m₃ : Z₁₃ ⟶ Z₂₃ :=
  Iso.inv (shiftShiftNeg Z₁₃ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₃ ≫ Iso.hom (shiftShiftNeg Z₂₃ 1)
eq₁ : w₁₂ ≫ o.m₁ = u₂₃ ≫ w₁₃
eq₂ : o.m₁ ≫ (-Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃) = -Functor.map (shiftFunctor C (A := ℤ) 1) v₁₂
eq₃ : w₁₃ ≫ o.m₃ = w₂₃
eq₄ :
  (-Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃) ≫ Functor.map (shiftFunctor C (A := ℤ) 1) u₁₂ =
    o.m₃ ≫ (-Functor.map (shiftFunctor C (A := ℤ) 1) v₂₃)
eq₅ : o.m₁ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃ = Functor.map (shiftFunctor C (A := ℤ) 1) v₁₂
⊢ w₁₃ ≫ o.m₃ = w₂₃

Tactic:
rw [comp_neg, neg_inj] at eq₂

Premises used: CategoryTheory.Preadditive.comp_neg, neg_inj
-- Module: Mathlib.CategoryTheory.Triangulated.Triangulated
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasShift.{v_1, u_1, 0} C ℤ
inst_4 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_5 : Pretriangulated.{v_1, u_1} C
inst_6 : IsTriangulated.{v_1, u_1} C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₂
h₁₂ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₂ u₁₂ w₁₂)
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₂₃
h₂₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₂₃ u₂₃ w₂₃)
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₃
h₁₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₃ u₁₃ w₁₃)
o : Octahedron comm ⋯ ⋯ ⋯ := someOctahedron comm ⋯ ⋯ ⋯
m₁ : Z₁₂ ⟶ Z₁₃ :=
  Iso.inv (shiftShiftNeg Z₁₂ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₁ ≫ Iso.hom (shiftShiftNeg Z₁₃ 1)
m₃ : Z₁₃ ⟶ Z₂₃ :=
  Iso.inv (shiftShiftNeg Z₁₃ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₃ ≫ Iso.hom (shiftShiftNeg Z₂₃ 1)
eq₁ : w₁₂ ≫ o.m₁ = u₂₃ ≫ w₁₃
eq₂ : o.m₁ ≫ (-Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃) = -Functor.map (shiftFunctor C (A := ℤ) 1) v₁₂
eq₃ : w₁₃ ≫ o.m₃ = w₂₃
eq₄ :
  (-Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃) ≫ Functor.map (shiftFunctor C (A := ℤ) 1) u₁₂ =
    o.m₃ ≫ (-Functor.map (shiftFunctor C (A := ℤ) 1) v₂₃)
eq₅ : o.m₁ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃ = Functor.map (shiftFunctor C (A := ℤ) 1) v₁₂
eq₆ : w₁₃ ≫ o.m₃ = w₂₃
⊢ (-Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃) ≫ Functor.map (shiftFunctor C (A := ℤ) 1) u₁₂ =
    o.m₃ ≫ (-Functor.map (shiftFunctor C (A := ℤ) 1) v₂₃)

Tactic:
rw [comp_neg, neg_inj] at eq₂

Premises used: CategoryTheory.Preadditive.comp_neg, neg_inj
-- Module: Mathlib.CategoryTheory.Triangulated.Triangulated
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasShift.{v_1, u_1, 0} C ℤ
inst_4 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_5 : Pretriangulated.{v_1, u_1} C
inst_6 : IsTriangulated.{v_1, u_1} C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₂
h₁₂ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₂ u₁₂ w₁₂)
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₂₃
h₂₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₂₃ u₂₃ w₂₃)
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₃
h₁₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₃ u₁₃ w₁₃)
o : Octahedron comm ⋯ ⋯ ⋯ := someOctahedron comm ⋯ ⋯ ⋯
m₁ : Z₁₂ ⟶ Z₁₃ :=
  Iso.inv (shiftShiftNeg Z₁₂ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₁ ≫ Iso.hom (shiftShiftNeg Z₁₃ 1)
m₃ : Z₁₃ ⟶ Z₂₃ :=
  Iso.inv (shiftShiftNeg Z₁₃ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₃ ≫ Iso.hom (shiftShiftNeg Z₂₃ 1)
eq₁ : w₁₂ ≫ o.m₁ = u₂₃ ≫ w₁₃
eq₂ : o.m₁ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃ = Functor.map (shiftFunctor C (A := ℤ) 1) v₁₂
eq₃ : w₁₃ ≫ o.m₃ = w₂₃
eq₄ :
  (-Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃) ≫ Functor.map (shiftFunctor C (A := ℤ) 1) u₁₂ =
    o.m₃ ≫ (-Functor.map (shiftFunctor C (A := ℤ) 1) v₂₃)
⊢ Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) u₁₂ =
    o.m₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) v₂₃

Tactic:
rw [neg_comp, comp_neg, neg_inj] at eq₄

Premises used: CategoryTheory.Preadditive.comp_neg, neg_inj, CategoryTheory.Preadditive.neg_comp
-- Module: Mathlib.CategoryTheory.Triangulated.Triangulated
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasShift.{v_1, u_1, 0} C ℤ
inst_4 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_5 : Pretriangulated.{v_1, u_1} C
inst_6 : IsTriangulated.{v_1, u_1} C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₂
h₁₂ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₂ u₁₂ w₁₂)
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₂₃
h₂₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₂₃ u₂₃ w₂₃)
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₃
h₁₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₃ u₁₃ w₁₃)
o : Octahedron comm ⋯ ⋯ ⋯ := someOctahedron comm ⋯ ⋯ ⋯
m₁ : Z₁₂ ⟶ Z₁₃ :=
  Iso.inv (shiftShiftNeg Z₁₂ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₁ ≫ Iso.hom (shiftShiftNeg Z₁₃ 1)
m₃ : Z₁₃ ⟶ Z₂₃ :=
  Iso.inv (shiftShiftNeg Z₁₃ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₃ ≫ Iso.hom (shiftShiftNeg Z₂₃ 1)
eq₁ : w₁₂ ≫ o.m₁ = u₂₃ ≫ w₁₃
eq₂ : o.m₁ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃ = Functor.map (shiftFunctor C (A := ℤ) 1) v₁₂
eq₃ : w₁₃ ≫ o.m₃ = w₂₃
eq₄ :
  Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) u₁₂ =
    o.m₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) v₂₃
refine_1 : m₁ ≫ v₁₃ = v₁₂
refine_2 : w₁₂ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) m₁ = u₂₃ ≫ w₁₃
refine_3 : w₁₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) m₃ = w₂₃
refine_4 : m₃ ≫ v₂₃ = v₁₃ ≫ u₁₂
refine_5 :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk m₁ m₃ (v₂₃ ≫ w₁₂))
⊢ Octahedron' comm h₁₂ h₂₃ h₁₃

Tactic:
refine ⟨m₁, m₃, ?_, ?_, ?_, ?_, ?_⟩
-- Module: Mathlib.CategoryTheory.Triangulated.Triangulated
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasShift.{v_1, u_1, 0} C ℤ
inst_4 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_5 : Pretriangulated.{v_1, u_1} C
inst_6 : IsTriangulated.{v_1, u_1} C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₂
h₁₂ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₂ u₁₂ w₁₂)
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₂₃
h₂₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₂₃ u₂₃ w₂₃)
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) Z₁₃
h₁₃ :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_1 inst_4 _)
    (Triangle.mk v₁₃ u₁₃ w₁₃)
o : Octahedron comm ⋯ ⋯ ⋯ := someOctahedron comm ⋯ ⋯ ⋯
m₁ : Z₁₂ ⟶ Z₁₃ :=
  Iso.inv (shiftShiftNeg Z₁₂ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₁ ≫ Iso.hom (shiftShiftNeg Z₁₃ 1)
m₃ : Z₁₃ ⟶ Z₂₃ :=
  Iso.inv (shiftShiftNeg Z₁₃ 1) ≫ Functor.map (shiftFunctor C (A := ℤ) (-1)) o.m₃ ≫ Iso.hom (shiftShiftNeg Z₂₃ 1)
eq₁ : w₁₂ ≫ o.m₁ = u₂₃ ≫ w₁₃
eq₂ : o.m₁ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃ = Functor.map (shiftFunctor C (A := ℤ) 1) v₁₂
eq₃ : w₁₃ ≫ o.m₃ = w₂₃
eq₄ :
  Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) u₁₂ =
    o.m₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) v₂₃
refine_1 :
  m₁ ≫
      CategoryStruct.comp (Y :=
        Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1 ⋙ shiftFunctor C (A := ℤ) (-1)) Z₁₃)
        (NatTrans.app (Iso.inv (shiftFunctorCompIsoId C 1 (-1) ⋯)) Z₁₃)
        (Functor.map (shiftFunctor C (A := ℤ) (-1)) (Functor.map (shiftFunctor C (A := ℤ) 1) v₁₃) ≫
          NatTrans.app (Iso.hom (shiftFunctorCompIsoId C 1 (-1) ⋯)) X₁) =
    v₁₂
⊢ m₁ ≫ v₁₃ = v₁₂

Tactic:
rw [← shiftFunctorCompIsoId_naturality_1 v₁₃ 1 (-1) (Int.add_right_neg 1)]

Premises used: CategoryTheory.shiftFunctorCompIsoId_naturality_1, Int.add_right_neg, OfNat.ofNat, Neg.neg