Theorem: CategoryTheory.Triangulated.Subcategory.respectsIso_W
File: Mathlib/CategoryTheory/Triangulated/Subcategory.lean

tactic: rintro X' X Y e f ⟨Z, g, h, mem, mem'⟩
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
⊢ ∀ {X Y Z : C} (e : X ≅ Y) (f : Y ⟶ Z), S.W f → S.W (e.hom ≫ f)
state_after: case 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
X' X Y : C
e : X' ≅ X
f : X ⟶ Y
Z : C
g : Y ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj X
mem : Triangle.mk f g h ∈ distinguishedTriangles
mem' : S.P Z
⊢ S.W (e.hom ≫ f)

tactic: refine' ⟨Z, g, h ≫ e.inv⟦(1 : ℤ)⟧', isomorphic_distinguished _ mem _ _, mem'⟩
state_before: case 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
X' X Y : C
e : X' ≅ X
f : X ⟶ Y
Z : C
g : Y ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj X
mem : Triangle.mk f g h ∈ distinguishedTriangles
mem' : S.P Z
⊢ S.W (e.hom ≫ f)
state_after: case 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
X' X Y : C
e : X' ≅ X
f : X ⟶ Y
Z : C
g : Y ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj X
mem : Triangle.mk f g h ∈ distinguishedTriangles
mem' : S.P Z
⊢ Triangle.mk (e.hom ≫ f) g (h ≫ (shiftFunctor C 1).map e.inv) ≅ Triangle.mk f g h

tactic: refine' Triangle.isoMk _ _ e (Iso.refl _) (Iso.refl _) (by aesop_cat) (by aesop_cat) _
state_before: case 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
X' X Y : C
e : X' ≅ X
f : X ⟶ Y
Z : C
g : Y ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj X
mem : Triangle.mk f g h ∈ distinguishedTriangles
mem' : S.P Z
⊢ Triangle.mk (e.hom ≫ f) g (h ≫ (shiftFunctor C 1).map e.inv) ≅ Triangle.mk f g h
state_after: case 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
X' X Y : C
e : X' ≅ X
f : X ⟶ Y
Z : C
g : Y ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj X
mem : Triangle.mk f g h ∈ distinguishedTriangles
mem' : S.P Z
⊢ (Triangle.mk (e.hom ≫ f) g (h ≫ (shiftFunctor C 1).map e.inv)).mor₃ ≫ (shiftFunctor C 1).map e.hom =
    (Iso.refl (Triangle.mk (e.hom ≫ f) g (h ≫ (shiftFunctor C 1).map e.inv)).obj₃).hom ≫ (Triangle.mk f g h).mor₃

tactic: dsimp
state_before: case 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
X' X Y : C
e : X' ≅ X
f : X ⟶ Y
Z : C
g : Y ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj X
mem : Triangle.mk f g h ∈ distinguishedTriangles
mem' : S.P Z
⊢ (Triangle.mk (e.hom ≫ f) g (h ≫ (shiftFunctor C 1).map e.inv)).mor₃ ≫ (shiftFunctor C 1).map e.hom =
    (Iso.refl (Triangle.mk (e.hom ≫ f) g (h ≫ (shiftFunctor C 1).map e.inv)).obj₃).hom ≫ (Triangle.mk f g h).mor₃
state_after: case 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
X' X Y : C
e : X' ≅ X
f : X ⟶ Y
Z : C
g : Y ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj X
mem : Triangle.mk f g h ∈ distinguishedTriangles
mem' : S.P Z
⊢ (h ≫ (shiftFunctor C 1).map e.inv) ≫ (shiftFunctor C 1).map e.hom = 𝟙 Z ≫ h

tactic: simp only [assoc, ← Functor.map_comp, e.inv_hom_id, Functor.map_id, comp_id, id_comp]
state_before: case 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
X' X Y : C
e : X' ≅ X
f : X ⟶ Y
Z : C
g : Y ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj X
mem : Triangle.mk f g h ∈ distinguishedTriangles
mem' : S.P Z
⊢ (h ≫ (shiftFunctor C 1).map e.inv) ≫ (shiftFunctor C 1).map e.hom = 𝟙 Z ≫ h
state_after: no goals

tactic: aesop_cat
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
X' X Y : C
e : X' ≅ X
f : X ⟶ Y
Z : C
g : Y ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj X
mem : Triangle.mk f g h ∈ distinguishedTriangles
mem' : S.P Z
⊢ (Triangle.mk (e.hom ≫ f) g (h ≫ (shiftFunctor C 1).map e.inv)).mor₁ ≫
      (Iso.refl (Triangle.mk (e.hom ≫ f) g (h ≫ (shiftFunctor C 1).map e.inv)).obj₂).hom =
    e.hom ≫ (Triangle.mk f g h).mor₁
state_after: no goals

tactic: aesop_cat
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
X' X Y : C
e : X' ≅ X
f : X ⟶ Y
Z : C
g : Y ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj X
mem : Triangle.mk f g h ∈ distinguishedTriangles
mem' : S.P Z
⊢ (Triangle.mk (e.hom ≫ f) g (h ≫ (shiftFunctor C 1).map e.inv)).mor₂ ≫
      (Iso.refl (Triangle.mk (e.hom ≫ f) g (h ≫ (shiftFunctor C 1).map e.inv)).obj₃).hom =
    (Iso.refl (Triangle.mk (e.hom ≫ f) g (h ≫ (shiftFunctor C 1).map e.inv)).obj₂).hom ≫ (Triangle.mk f g h).mor₂
state_after: no goals

tactic: rintro X Y Y' e f ⟨Z, g, h, mem, mem'⟩
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
⊢ ∀ {X Y Z : C} (e : Y ≅ Z) (f : X ⟶ Y), S.W f → S.W (f ≫ e.hom)
state_after: case 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
X Y Y' : C
e : Y ≅ Y'
f : X ⟶ Y
Z : C
g : Y ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj X
mem : Triangle.mk f g h ∈ distinguishedTriangles
mem' : S.P Z
⊢ S.W (f ≫ e.hom)

tactic: refine' ⟨Z, e.inv ≫ g, h, isomorphic_distinguished _ mem _ _, mem'⟩
state_before: case 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
X Y Y' : C
e : Y ≅ Y'
f : X ⟶ Y
Z : C
g : Y ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj X
mem : Triangle.mk f g h ∈ distinguishedTriangles
mem' : S.P Z
⊢ S.W (f ≫ e.hom)
state_after: case 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
X Y Y' : C
e : Y ≅ Y'
f : X ⟶ Y
Z : C
g : Y ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj X
mem : Triangle.mk f g h ∈ distinguishedTriangles
mem' : S.P Z
⊢ Triangle.mk (f ≫ e.hom) (e.inv ≫ g) h ≅ Triangle.mk f g h

tactic: exact Triangle.isoMk _ _ (Iso.refl _) e.symm (Iso.refl _)
state_before: case 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
X Y Y' : C
e : Y ≅ Y'
f : X ⟶ Y
Z : C
g : Y ⟶ Z
h : Z ⟶ (shiftFunctor C 1).obj X
mem : Triangle.mk f g h ∈ distinguishedTriangles
mem' : S.P Z
⊢ Triangle.mk (f ≫ e.hom) (e.inv ≫ g) h ≅ Triangle.mk f g h
state_after: no goals