Theorem: CategoryTheory.Pretriangulated.Triangle.mor₁_eq_zero_iff_epi₃
File: Mathlib/CategoryTheory/Triangulated/Pretriangulated.lean

Proof steps:
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
⊢ T.mor₁ = 0 ↔ Epi T.mor₃
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
h : T.rotate.mor₃ = 0 ↔ Epi T.rotate.mor₂
⊢ T.mor₁ = 0 ↔ Epi T.mor₃
tactic: have h := mor₃_eq_zero_iff_epi₂ _ (rot_of_distTriang _ hT)
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
h : T.rotate.mor₃ = 0 ↔ Epi T.rotate.mor₂
⊢ T.mor₁ = 0 ↔ Epi T.mor₃
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
h : -(CategoryTheory.shiftFunctor C 1).map T.mor₁ = 0 ↔ Epi T.mor₃
⊢ T.mor₁ = 0 ↔ Epi T.mor₃
tactic: dsimp at h
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
h : -(CategoryTheory.shiftFunctor C 1).map T.mor₁ = 0 ↔ Epi T.mor₃
⊢ T.mor₁ = 0 ↔ Epi T.mor₃
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
h : -(CategoryTheory.shiftFunctor C 1).map T.mor₁ = 0 ↔ Epi T.mor₃
⊢ T.mor₁ = 0 ↔ (CategoryTheory.shiftFunctor C 1).map T.mor₁ = 0
tactic: rw [← h, neg_eq_zero]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
h : -(CategoryTheory.shiftFunctor C 1).map T.mor₁ = 0 ↔ Epi T.mor₃
⊢ T.mor₁ = 0 ↔ (CategoryTheory.shiftFunctor C 1).map T.mor₁ = 0
state_after: case mp
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
h : -(CategoryTheory.shiftFunctor C 1).map T.mor₁ = 0 ↔ Epi T.mor₃
⊢ T.mor₁ = 0 → (CategoryTheory.shiftFunctor C 1).map T.mor₁ = 0

case mpr
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
h : -(CategoryTheory.shiftFunctor C 1).map T.mor₁ = 0 ↔ Epi T.mor₃
⊢ (CategoryTheory.shiftFunctor C 1).map T.mor₁ = 0 → T.mor₁ = 0
tactic: constructor