Theorem: CategoryTheory.Triangulated.Subcategory.W_iff'
File: Mathlib/CategoryTheory/Triangulated/Subcategory.lean

tactic: rw [S.W_iff]
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z : C
g : Y ⟶ Z
⊢ S.W g ↔ ∃ X f h, ∃ (_ : Triangle.mk f g h ∈ distinguishedTriangles), S.P X
state_after: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z : C
g : Y ⟶ Z
⊢ (∃ Z_1 g_1 h, ∃ (_ : Triangle.mk g g_1 h ∈ distinguishedTriangles), S.P Z_1) ↔
    ∃ X f h, ∃ (_ : Triangle.mk f g h ∈ distinguishedTriangles), S.P X

tactic: constructor
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z : C
g : Y ⟶ Z
⊢ (∃ Z_1 g_1 h, ∃ (_ : Triangle.mk g g_1 h ∈ distinguishedTriangles), S.P Z_1) ↔
    ∃ X f h, ∃ (_ : Triangle.mk f g h ∈ distinguishedTriangles), S.P X
state_after: case mp
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z : C
g : Y ⟶ Z
⊢ (∃ Z_1 g_1 h, ∃ (_ : Triangle.mk g g_1 h ∈ distinguishedTriangles), S.P Z_1) →
    ∃ X f h, ∃ (_ : Triangle.mk f g h ∈ distinguishedTriangles), S.P X

case mpr
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z : C
g : Y ⟶ Z
⊢ (∃ X f h, ∃ (_ : Triangle.mk f g h ∈ distinguishedTriangles), S.P X) →
    ∃ Z_1 g_1 h, ∃ (_ : Triangle.mk g g_1 h ∈ distinguishedTriangles), S.P Z_1

tactic: rintro ⟨Z, g, h, H, mem⟩
state_before: case mp
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z : C
g : Y ⟶ Z
⊢ (∃ Z_1 g_1 h, ∃ (_ : Triangle.mk g g_1 h ∈ distinguishedTriangles), S.P Z_1) →
    ∃ X f h, ∃ (_ : Triangle.mk f g h ∈ distinguishedTriangles), S.P X
state_after: case mp.intro.intro.intro.intro
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z✝ : C
g✝ : Y ⟶ Z✝
Z : C
g : Z✝ ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj Y
H : Triangle.mk g✝ g h ∈ distinguishedTriangles
mem : S.P Z
⊢ ∃ X f h, ∃ (_ : Triangle.mk f g✝ h ∈ distinguishedTriangles), S.P X

tactic: exact ⟨_, _, _, inv_rot_of_distTriang _ H, S.shift _ (-1) mem⟩
state_before: case mp.intro.intro.intro.intro
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z✝ : C
g✝ : Y ⟶ Z✝
Z : C
g : Z✝ ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj Y
H : Triangle.mk g✝ g h ∈ distinguishedTriangles
mem : S.P Z
⊢ ∃ X f h, ∃ (_ : Triangle.mk f g✝ h ∈ distinguishedTriangles), S.P X
state_after: no goals

tactic: rintro ⟨Z, g, h, H, mem⟩
state_before: case mpr
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z : C
g : Y ⟶ Z
⊢ (∃ X f h, ∃ (_ : Triangle.mk f g h ∈ distinguishedTriangles), S.P X) →
    ∃ Z_1 g_1 h, ∃ (_ : Triangle.mk g g_1 h ∈ distinguishedTriangles), S.P Z_1
state_after: case mpr.intro.intro.intro.intro
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z✝ : C
g✝ : Y ⟶ Z✝
Z : C
g : Z ⟶ Y
h : Z✝ ⟶ (shiftFunctor C 1).obj Z
H : Triangle.mk g g✝ h ∈ distinguishedTriangles
mem : S.P Z
⊢ ∃ Z g h, ∃ (_ : Triangle.mk g✝ g h ∈ distinguishedTriangles), S.P Z

tactic: exact ⟨_, _, _, rot_of_distTriang _ H, S.shift _ 1 mem⟩
state_before: case mpr.intro.intro.intro.intro
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z✝ : C
g✝ : Y ⟶ Z✝
Z : C
g : Z ⟶ Y
h : Z✝ ⟶ (shiftFunctor C 1).obj Z
H : Triangle.mk g g✝ h ∈ distinguishedTriangles
mem : S.P Z
⊢ ∃ Z g h, ∃ (_ : Triangle.mk g✝ g h ∈ distinguishedTriangles), S.P Z
state_after: no goals