awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.CategoryTheory.Triangulated.Pretriangulated (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : HasZeroObject.{v, u} C
inst_2 : HasShift.{v, u, 0} C ℤ
inst_3 : Preadditive.{v, u} C
inst_4 : ∀ (n : ℤ), Functor.Additive.{v, u, v, u} (shiftFunctor C n)
hC : Pretriangulated.{v, u} C
J : Type u_1
T : J → Triangle.{v, u} C
hT :
  ∀ (j : J), Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) (T j)
inst_5 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₁
inst_6 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₂
inst_7 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₃
inst_8 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (T j).obj₁
f₁ : Quiver.Hom.{v, u} (V := C) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
  (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) :=
  Limits.Pi.map fun (j : J) ↦ (T j).mor₁
Z : C
f₂ : (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) ⟶ Z
f₃ : Z ⟶ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
T' : Triangle.{v, u} C := Triangle.mk f₁ f₂ f₃
hT' : Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) T'
φ : (j : J) → T' ⟶ T j :=
  fun (j : J) ↦
    completeDistinguishedTriangleMorphism T' (T j) hT' ⋯ (Pi.π (fun (j : J) ↦ (T j).obj₁) j)
      (Pi.π (fun (j : J) ↦ (T j).obj₂) j) ⋯
φ' : T' ⟶ productTriangle T := productTriangle.lift T φ
h₁ : φ'.hom₁ = 𝟙 T'.obj₁
h₂ : φ'.hom₂ = 𝟙 T'.obj₂
this_1 : IsIso φ'.hom₁
this : IsIso φ'.hom₂
A_1 A : C
f : A ⟶ T'.obj₃
hf : f ≫ φ'.hom₃ = 0
rw :
  (f ≫ T'.mor₃) ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁ = 0 ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁
rw₁ : (f ≫ T'.mor₃) ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁ = 0
⊢ f ≫ T'.mor₃ = 0
have rw₂ : f ≫ T'.mor₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁ = 0
Tactic: rw [← cancel_mono (φ'.hom₁⟦1⟧'), zero_comp, assoc, φ'.comm₃, reassoc_of% hf, zero_comp]
-- Lean 4 proof step from Mathlib.CategoryTheory.Triangulated.Pretriangulated (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : HasZeroObject.{v, u} C
inst_2 : HasShift.{v, u, 0} C ℤ
inst_3 : Preadditive.{v, u} C
inst_4 : ∀ (n : ℤ), Functor.Additive.{v, u, v, u} (shiftFunctor C n)
hC : Pretriangulated.{v, u} C
J : Type u_1
T : J → Triangle.{v, u} C
hT :
  ∀ (j : J), Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) (T j)
inst_5 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₁
inst_6 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₂
inst_7 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₃
inst_8 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (T j).obj₁
f₁ : Quiver.Hom.{v, u} (V := C) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
  (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) :=
  Limits.Pi.map fun (j : J) ↦ (T j).mor₁
Z : C
f₂ : (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) ⟶ Z
f₃ : Z ⟶ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
T' : Triangle.{v, u} C := Triangle.mk f₁ f₂ f₃
hT' : Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) T'
φ : (j : J) → T' ⟶ T j :=
  fun (j : J) ↦
    completeDistinguishedTriangleMorphism T' (T j) hT' ⋯ (Pi.π (fun (j : J) ↦ (T j).obj₁) j)
      (Pi.π (fun (j : J) ↦ (T j).obj₂) j) ⋯
φ' : T' ⟶ productTriangle T := productTriangle.lift T φ
h₁ : φ'.hom₁ = 𝟙 T'.obj₁
h₂ : φ'.hom₂ = 𝟙 T'.obj₂
this_1 : IsIso φ'.hom₁
this : IsIso φ'.hom₂
A_1 A : C
f : A ⟶ T'.obj₃
hf : f ≫ φ'.hom₃ = 0
rw :
  (f ≫ T'.mor₃) ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁ = 0 ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁
rw₁ : (f ≫ T'.mor₃) ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁ = 0
rw₂ : f ≫ T'.mor₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁ = 0
⊢ f ≫ T'.mor₃ = 0
have rw₃ : f ≫ φ'.hom₃ ≫ (productTriangle T).mor₃ = 0
Tactic: rw [← cancel_mono (φ'.hom₁⟦1⟧'), zero_comp, assoc, φ'.comm₃, reassoc_of% hf, zero_comp]
-- Lean 4 proof step from Mathlib.CategoryTheory.Triangulated.Pretriangulated (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : HasZeroObject.{v, u} C
inst_2 : HasShift.{v, u, 0} C ℤ
inst_3 : Preadditive.{v, u} C
inst_4 : ∀ (n : ℤ), Functor.Additive.{v, u, v, u} (shiftFunctor C n)
hC : Pretriangulated.{v, u} C
J : Type u_1
T : J → Triangle.{v, u} C
hT :
  ∀ (j : J), Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) (T j)
inst_5 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₁
inst_6 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₂
inst_7 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₃
inst_8 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (T j).obj₁
f₁ : Quiver.Hom.{v, u} (V := C) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
  (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) :=
  Limits.Pi.map fun (j : J) ↦ (T j).mor₁
Z : C
f₂ : (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) ⟶ Z
f₃ : Z ⟶ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
T' : Triangle.{v, u} C := Triangle.mk f₁ f₂ f₃
hT' : Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) T'
φ : (j : J) → T' ⟶ T j :=
  fun (j : J) ↦
    completeDistinguishedTriangleMorphism T' (T j) hT' ⋯ (Pi.π (fun (j : J) ↦ (T j).obj₁) j)
      (Pi.π (fun (j : J) ↦ (T j).obj₂) j) ⋯
φ' : T' ⟶ productTriangle T := productTriangle.lift T φ
h₁ : φ'.hom₁ = 𝟙 T'.obj₁
h₂ : φ'.hom₂ = 𝟙 T'.obj₂
this_1 : IsIso φ'.hom₁
this : IsIso φ'.hom₂
A_1 A : C
f : A ⟶ T'.obj₃
hf : f ≫ φ'.hom₃ = 0
rw :
  (f ≫ T'.mor₃) ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁ = 0 ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁
rw₁ : (f ≫ T'.mor₃) ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁ = 0
rw₂ : f ≫ T'.mor₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁ = 0
rw₃ : f ≫ φ'.hom₃ ≫ (productTriangle T).mor₃ = 0
⊢ f ≫ T'.mor₃ = 0
have rw₄ : Eq (α := A ⟶ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (productTriangle T).obj₁)
  (0 ≫ (productTriangle T).mor₃) 0
Tactic: rw [← cancel_mono (φ'.hom₁⟦1⟧'), zero_comp, assoc, φ'.comm₃, reassoc_of% hf, zero_comp]
-- Lean 4 proof step from Mathlib.CategoryTheory.Triangulated.Pretriangulated (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : HasZeroObject.{v, u} C
inst_2 : HasShift.{v, u, 0} C ℤ
inst_3 : Preadditive.{v, u} C
inst_4 : ∀ (n : ℤ), Functor.Additive.{v, u, v, u} (shiftFunctor C n)
hC : Pretriangulated.{v, u} C
J : Type u_1
T : J → Triangle.{v, u} C
hT :
  ∀ (j : J), Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) (T j)
inst_5 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₁
inst_6 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₂
inst_7 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₃
inst_8 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (T j).obj₁
f₁ : Quiver.Hom.{v, u} (V := C) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
  (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) :=
  Limits.Pi.map fun (j : J) ↦ (T j).mor₁
Z : C
f₂ : (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) ⟶ Z
f₃ : Z ⟶ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
T' : Triangle.{v, u} C := Triangle.mk f₁ f₂ f₃
hT' : Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) T'
φ : (j : J) → T' ⟶ T j :=
  fun (j : J) ↦
    completeDistinguishedTriangleMorphism T' (T j) hT' ⋯ (Pi.π (fun (j : J) ↦ (T j).obj₁) j)
      (Pi.π (fun (j : J) ↦ (T j).obj₂) j) ⋯
φ' : T' ⟶ productTriangle T := productTriangle.lift T φ
h₁ : φ'.hom₁ = 𝟙 T'.obj₁
h₂ : φ'.hom₂ = 𝟙 T'.obj₂
this_1 : IsIso φ'.hom₁
this : IsIso φ'.hom₂
A_1 A : C
f : A ⟶ T'.obj₃
hf : f ≫ φ'.hom₃ = 0
rw :
  (f ≫ T'.mor₃) ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁ = 0 ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁
rw₁ : (f ≫ T'.mor₃) ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁ = 0
rw₂ : f ≫ T'.mor₃ ≫ Functor.map (shiftFunctor C (A := ℤ) 1) φ'.hom₁ = 0
rw₃ : f ≫ φ'.hom₃ ≫ (productTriangle T).mor₃ = 0
rw₄ :
  Eq (α := A ⟶ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (productTriangle T).obj₁)
    (0 ≫ (productTriangle T).mor₃) 0
⊢ f ≫ T'.mor₃ = 0
have rw₅ : Eq.{v + 1} (α := A ⟶ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (productTriangle T).obj₁) 0 0
Tactic: rw [← cancel_mono (φ'.hom₁⟦1⟧'), zero_comp, assoc, φ'.comm₃, reassoc_of% hf, zero_comp]
-- Lean 4 proof step from Mathlib.CategoryTheory.Triangulated.Pretriangulated (hypothesis)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : HasZeroObject.{v, u} C
inst_2 : HasShift.{v, u, 0} C ℤ
inst_3 : Preadditive.{v, u} C
inst_4 : ∀ (n : ℤ), Functor.Additive.{v, u, v, u} (shiftFunctor C n)
hC : Pretriangulated.{v, u} C
J : Type u_1
T : J → Triangle.{v, u} C
hT :
  ∀ (j : J), Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) (T j)
inst_5 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₁
inst_6 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₂
inst_7 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₃
inst_8 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (T j).obj₁
f₁ : Quiver.Hom.{v, u} (V := C) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
  (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) :=
  Limits.Pi.map fun (j : J) ↦ (T j).mor₁
Z : C
f₂ : (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) ⟶ Z
f₃ : Z ⟶ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
T' : Triangle.{v, u} C := Triangle.mk f₁ f₂ f₃
hT' : Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) T'
φ : (j : J) → T' ⟶ T j :=
  fun (j : J) ↦
    completeDistinguishedTriangleMorphism T' (T j) hT' ⋯ (Pi.π (fun (j : J) ↦ (T j).obj₁) j)
      (Pi.π (fun (j : J) ↦ (T j).obj₂) j) ⋯
φ' : T' ⟶ productTriangle T := productTriangle.lift T φ
h₁ : φ'.hom₁ = 𝟙 T'.obj₁
h₂ : φ'.hom₂ = 𝟙 T'.obj₂
this_1 : IsIso φ'.hom₁
this : IsIso φ'.hom₂
A_1 A : C
f : A ⟶ T'.obj₃
hf : f ≫ φ'.hom₃ = 0
⊢ f = 0
have hf' : f ≫ T'.mor₃ = 0
Tactic: have hf' : f ≫ T'.mor₃ = 0 := by
      rw [← cancel_mono (φ'.hom₁⟦1⟧'), zero_comp, assoc, φ'.comm₃, reassoc_of% hf, zero_comp]
-- Lean 4 proof step from Mathlib.CategoryTheory.Triangulated.Pretriangulated (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : HasZeroObject.{v, u} C
inst_2 : HasShift.{v, u, 0} C ℤ
inst_3 : Preadditive.{v, u} C
inst_4 : ∀ (n : ℤ), Functor.Additive.{v, u, v, u} (shiftFunctor C n)
hC : Pretriangulated.{v, u} C
J : Type u_1
T : J → Triangle.{v, u} C
hT :
  ∀ (j : J), Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) (T j)
inst_5 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₁
inst_6 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₂
inst_7 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₃
inst_8 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (T j).obj₁
f₁ : Quiver.Hom.{v, u} (V := C) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
  (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) :=
  Limits.Pi.map fun (j : J) ↦ (T j).mor₁
Z : C
f₂ : (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) ⟶ Z
f₃ : Z ⟶ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
T' : Triangle.{v, u} C := Triangle.mk f₁ f₂ f₃
hT' : Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) T'
φ : (j : J) → T' ⟶ T j :=
  fun (j : J) ↦
    completeDistinguishedTriangleMorphism T' (T j) hT' ⋯ (Pi.π (fun (j : J) ↦ (T j).obj₁) j)
      (Pi.π (fun (j : J) ↦ (T j).obj₂) j) ⋯
φ' : T' ⟶ productTriangle T := productTriangle.lift T φ
h₁ : φ'.hom₁ = 𝟙 T'.obj₁
h₂ : φ'.hom₂ = 𝟙 T'.obj₂
this_1 : IsIso φ'.hom₁
this : IsIso φ'.hom₂
A_1 A : C
f : A ⟶ T'.obj₃
hf : f ≫ φ'.hom₃ = 0
hf' : f ≫ T'.mor₃ = 0
⊢ f = 0
have refine_1 : ∀ (g : A ⟶ T'.obj₂) (hg : f = g ≫ T'.mor₂), f = 0
Tactic: obtain ⟨g, hg⟩ := T'.coyoneda_exact₃ hT' f hf'
-- Lean 4 proof step from Mathlib.CategoryTheory.Triangulated.Pretriangulated (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : HasZeroObject.{v, u} C
inst_2 : HasShift.{v, u, 0} C ℤ
inst_3 : Preadditive.{v, u} C
inst_4 : ∀ (n : ℤ), Functor.Additive.{v, u, v, u} (shiftFunctor C n)
hC : Pretriangulated.{v, u} C
J : Type u_1
T : J → Triangle.{v, u} C
hT :
  ∀ (j : J), Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) (T j)
inst_5 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₁
inst_6 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₂
inst_7 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₃
inst_8 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (T j).obj₁
f₁ : Quiver.Hom.{v, u} (V := C) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
  (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) :=
  Limits.Pi.map fun (j : J) ↦ (T j).mor₁
Z : C
f₂ : (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) ⟶ Z
f₃ : Z ⟶ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
T' : Triangle.{v, u} C := Triangle.mk f₁ f₂ f₃
hT' : Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) T'
φ : (j : J) → T' ⟶ T j :=
  fun (j : J) ↦
    completeDistinguishedTriangleMorphism T' (T j) hT' ⋯ (Pi.π (fun (j : J) ↦ (T j).obj₁) j)
      (Pi.π (fun (j : J) ↦ (T j).obj₂) j) ⋯
φ' : T' ⟶ productTriangle T := productTriangle.lift T φ
h₁ : φ'.hom₁ = 𝟙 T'.obj₁
h₂ : φ'.hom₂ = 𝟙 T'.obj₂
this_1 : IsIso φ'.hom₁
this : IsIso φ'.hom₂
A_1 A : C
f : A ⟶ T'.obj₃
hf : f ≫ φ'.hom₃ = 0
hf' : f ≫ T'.mor₃ = 0
g : A ⟶ T'.obj₂
hg : f = g ≫ T'.mor₂
j : J
⊢ g ≫ T'.mor₂ ≫ φ'.hom₃ ≫ Pi.π (fun (j : J) ↦ (T j).obj₃) j = 0
have rw : f ≫ φ'.hom₃ ≫ Pi.π (fun (j : J) ↦ (T j).obj₃) j = 0
Tactic: rw [← reassoc_of% hg, reassoc_of% hf, zero_comp]
-- Lean 4 proof step from Mathlib.CategoryTheory.Triangulated.Pretriangulated (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : HasZeroObject.{v, u} C
inst_2 : HasShift.{v, u, 0} C ℤ
inst_3 : Preadditive.{v, u} C
inst_4 : ∀ (n : ℤ), Functor.Additive.{v, u, v, u} (shiftFunctor C n)
hC : Pretriangulated.{v, u} C
J : Type u_1
T : J → Triangle.{v, u} C
hT :
  ∀ (j : J), Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) (T j)
inst_5 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₁
inst_6 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₂
inst_7 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₃
inst_8 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (T j).obj₁
f₁ : Quiver.Hom.{v, u} (V := C) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
  (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) :=
  Limits.Pi.map fun (j : J) ↦ (T j).mor₁
Z : C
f₂ : (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) ⟶ Z
f₃ : Z ⟶ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
T' : Triangle.{v, u} C := Triangle.mk f₁ f₂ f₃
hT' : Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) T'
φ : (j : J) → T' ⟶ T j :=
  fun (j : J) ↦
    completeDistinguishedTriangleMorphism T' (T j) hT' ⋯ (Pi.π (fun (j : J) ↦ (T j).obj₁) j)
      (Pi.π (fun (j : J) ↦ (T j).obj₂) j) ⋯
φ' : T' ⟶ productTriangle T := productTriangle.lift T φ
h₁ : φ'.hom₁ = 𝟙 T'.obj₁
h₂ : φ'.hom₂ = 𝟙 T'.obj₂
this_1 : IsIso φ'.hom₁
this : IsIso φ'.hom₂
A_1 A : C
f : A ⟶ T'.obj₃
hf : f ≫ φ'.hom₃ = 0
hf' : f ≫ T'.mor₃ = 0
g : A ⟶ T'.obj₂
hg : f = g ≫ T'.mor₂
j : J
rw : f ≫ φ'.hom₃ ≫ Pi.π (fun (j : J) ↦ (T j).obj₃) j = 0
⊢ g ≫ T'.mor₂ ≫ φ'.hom₃ ≫ Pi.π (fun (j : J) ↦ (T j).obj₃) j = 0
have rw₁ : Eq.{v + 1} (α := A ⟶ (T j).obj₃)
  (CategoryStruct.comp (Y := (productTriangle T).obj₃) 0 (Pi.π (fun (j : J) ↦ (T j).obj₃) j) : A ⟶ (T j).obj₃)
  (0 : A ⟶ (T j).obj₃)
Tactic: rw [← reassoc_of% hg, reassoc_of% hf, zero_comp]
-- Lean 4 proof step from Mathlib.CategoryTheory.Triangulated.Pretriangulated (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : HasZeroObject.{v, u} C
inst_2 : HasShift.{v, u, 0} C ℤ
inst_3 : Preadditive.{v, u} C
inst_4 : ∀ (n : ℤ), Functor.Additive.{v, u, v, u} (shiftFunctor C n)
hC : Pretriangulated.{v, u} C
J : Type u_1
T : J → Triangle.{v, u} C
hT :
  ∀ (j : J), Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) (T j)
inst_5 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₁
inst_6 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₂
inst_7 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₃
inst_8 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (T j).obj₁
f₁ : Quiver.Hom.{v, u} (V := C) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
  (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) :=
  Limits.Pi.map fun (j : J) ↦ (T j).mor₁
Z : C
f₂ : (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) ⟶ Z
f₃ : Z ⟶ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
T' : Triangle.{v, u} C := Triangle.mk f₁ f₂ f₃
hT' : Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) T'
φ : (j : J) → T' ⟶ T j :=
  fun (j : J) ↦
    completeDistinguishedTriangleMorphism T' (T j) hT' ⋯ (Pi.π (fun (j : J) ↦ (T j).obj₁) j)
      (Pi.π (fun (j : J) ↦ (T j).obj₂) j) ⋯
φ' : T' ⟶ productTriangle T := productTriangle.lift T φ
h₁ : φ'.hom₁ = 𝟙 T'.obj₁
h₂ : φ'.hom₂ = 𝟙 T'.obj₂
this_1 : IsIso φ'.hom₁
this : IsIso φ'.hom₂
A_1 A : C
f : A ⟶ T'.obj₃
hf : f ≫ φ'.hom₃ = 0
hf' : f ≫ T'.mor₃ = 0
g : A ⟶ T'.obj₂
hg : f = g ≫ T'.mor₂
j : J
rw : f ≫ φ'.hom₃ ≫ Pi.π (fun (j : J) ↦ (T j).obj₃) j = 0
rw₁ :
  Eq.{v + 1} (α := A ⟶ (T j).obj₃)
    (CategoryStruct.comp (Y := (productTriangle T).obj₃) 0 (Pi.π (fun (j : J) ↦ (T j).obj₃) j) : A ⟶ (T j).obj₃)
    (0 : A ⟶ (T j).obj₃)
⊢ g ≫ T'.mor₂ ≫ φ'.hom₃ ≫ Pi.π (fun (j : J) ↦ (T j).obj₃) j = 0
have rw₂ : Eq.{v + 1} (α := A ⟶ (T j).obj₃) 0 0
Tactic: rw [← reassoc_of% hg, reassoc_of% hf, zero_comp]
-- Lean 4 proof step from Mathlib.CategoryTheory.Triangulated.Pretriangulated (hypothesis)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : HasZeroObject.{v, u} C
inst_2 : HasShift.{v, u, 0} C ℤ
inst_3 : Preadditive.{v, u} C
inst_4 : ∀ (n : ℤ), Functor.Additive.{v, u, v, u} (shiftFunctor C n)
hC : Pretriangulated.{v, u} C
J : Type u_1
T : J → Triangle.{v, u} C
hT :
  ∀ (j : J), Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) (T j)
inst_5 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₁
inst_6 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₂
inst_7 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₃
inst_8 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (T j).obj₁
f₁ : Quiver.Hom.{v, u} (V := C) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
  (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) :=
  Limits.Pi.map fun (j : J) ↦ (T j).mor₁
Z : C
f₂ : (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) ⟶ Z
f₃ : Z ⟶ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
T' : Triangle.{v, u} C := Triangle.mk f₁ f₂ f₃
hT' : Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) T'
φ : (j : J) → T' ⟶ T j :=
  fun (j : J) ↦
    completeDistinguishedTriangleMorphism T' (T j) hT' ⋯ (Pi.π (fun (j : J) ↦ (T j).obj₁) j)
      (Pi.π (fun (j : J) ↦ (T j).obj₂) j) ⋯
φ' : T' ⟶ productTriangle T := productTriangle.lift T φ
h₁ : φ'.hom₁ = 𝟙 T'.obj₁
h₂ : φ'.hom₂ = 𝟙 T'.obj₂
this_1 : IsIso φ'.hom₁
this : IsIso φ'.hom₂
A_1 A : C
f : A ⟶ T'.obj₃
hf : f ≫ φ'.hom₃ = 0
hf' : f ≫ T'.mor₃ = 0
g : A ⟶ T'.obj₂
hg : f = g ≫ T'.mor₂
j : J
⊢ (g ≫ Pi.π (fun (j : J) ↦ (T j).obj₂) j) ≫ (T j).mor₂ = 0
have this₁ : g ≫ T'.mor₂ ≫ φ'.hom₃ ≫ Pi.π (fun (j : J) ↦ (T j).obj₃) j = 0
Tactic: have : g ≫ T'.mor₂ ≫ φ'.hom₃ ≫ Pi.π _ j = 0 := by
        rw [← reassoc_of% hg, reassoc_of% hf, zero_comp]
-- Lean 4 proof step from Mathlib.CategoryTheory.Triangulated.Pretriangulated (hypothesis)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : HasZeroObject.{v, u} C
inst_2 : HasShift.{v, u, 0} C ℤ
inst_3 : Preadditive.{v, u} C
inst_4 : ∀ (n : ℤ), Functor.Additive.{v, u, v, u} (shiftFunctor C n)
hC : Pretriangulated.{v, u} C
J : Type u_1
T : J → Triangle.{v, u} C
hT :
  ∀ (j : J), Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) (T j)
inst_5 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₁
inst_6 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₂
inst_7 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ (T j).obj₃
inst_8 : HasProduct.{u_1, v, u} (C := C) fun (j : J) ↦ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (T j).obj₁
f₁ : Quiver.Hom.{v, u} (V := C) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
  (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) :=
  Limits.Pi.map fun (j : J) ↦ (T j).mor₁
Z : C
f₂ : (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₂) ⟶ Z
f₃ : Z ⟶ Functor.obj.{v, v, u, u} (shiftFunctor C (A := ℤ) 1) (piObj.{u_1, v, u} fun (j : J) ↦ (T j).obj₁)
T' : Triangle.{v, u} C := Triangle.mk f₁ f₂ f₃
hT' : Membership.mem (γ := Set (Triangle.{v, u} C)) (@distinguishedTriangles _ _ inst_1 _ inst_3 inst_4 _) T'
φ : (j : J) → T' ⟶ T j :=
  fun (j : J) ↦
    completeDistinguishedTriangleMorphism T' (T j) hT' ⋯ (Pi.π (fun (j : J) ↦ (T j).obj₁) j)
      (Pi.π (fun (j : J) ↦ (T j).obj₂) j) ⋯
φ' : T' ⟶ productTriangle T := productTriangle.lift T φ
h₁ : φ'.hom₁ = 𝟙 T'.obj₁
h₂ : φ'.hom₂ = 𝟙 T'.obj₂
this_1 : IsIso φ'.hom₁
this_2 : IsIso φ'.hom₂
A_1 A : C
f : A ⟶ T'.obj₃
hf : f ≫ φ'.hom₃ = 0
hf' : f ≫ T'.mor₃ = 0
g : A ⟶ T'.obj₂
hg : f = g ≫ T'.mor₂
j : J
this : g ≫ T'.mor₂ ≫ φ'.hom₃ ≫ Pi.π (fun (j : J) ↦ (T j).obj₃) j = 0
⊢ (g ≫ Pi.π (fun (j : J) ↦ (T j).obj₂) j) ≫ (T j).mor₂ = 0
have this₁ : g ≫ (productTriangle T).mor₂ ≫ Pi.π (fun (j : J) ↦ (T j).obj₃) j = 0
Tactic: rw [φ'.comm₂_assoc, h₂, id_comp] at this
Cleared hypotheses: this