File: Mathlib/CategoryTheory/Triangulated/TriangleShift.lean

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctor
code: /-- The shift functor `Triangle C ⥤ Triangle C` by `n : ℤ` sends a triangle
to the triangle obtained by shifting the objects by `n` in `C` and by
multiplying the three morphisms by `(-1)^n`. -/
@[simps]
noncomputable def Triangle.shiftFunctor (n : ℤ) : Triangle C ⥤ Triangle C 
goal: CategoryTheory.Functor (CategoryTheory.Pretriangulated.Triangle C) (CategoryTheory.Pretriangulated.Triangle C)

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctor_map_hom₃
code: /-- The shift functor `Triangle C ⥤ Triangle C` by `n : ℤ` sends a triangle
to the triangle obtained by shifting the objects by `n` in `C` and by
multiplying the three morphisms by `(-1)^n`. -/
@[simps]
noncomputable def Triangle.shiftFunctor (n : ℤ) : Triangle C ⥤ Triangle C 
goal: ∀ {X Y : CategoryTheory.Pretriangulated.Triangle C} (f : X ⟶ Y),
  ((CategoryTheory.Pretriangulated.Triangle.shiftFunctor C n).map f).hom₃ = (CategoryTheory.shiftFunctor C n).map f.hom₃

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctor_map_hom₁
code: /-- The shift functor `Triangle C ⥤ Triangle C` by `n : ℤ` sends a triangle
to the triangle obtained by shifting the objects by `n` in `C` and by
multiplying the three morphisms by `(-1)^n`. -/
@[simps]
noncomputable def Triangle.shiftFunctor (n : ℤ) : Triangle C ⥤ Triangle C 
goal: ∀ {X Y : CategoryTheory.Pretriangulated.Triangle C} (f : X ⟶ Y),
  ((CategoryTheory.Pretriangulated.Triangle.shiftFunctor C n).map f).hom₁ = (CategoryTheory.shiftFunctor C n).map f.hom₁

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctor_obj
code: /-- The shift functor `Triangle C ⥤ Triangle C` by `n : ℤ` sends a triangle
to the triangle obtained by shifting the objects by `n` in `C` and by
multiplying the three morphisms by `(-1)^n`. -/
@[simps]
noncomputable def Triangle.shiftFunctor (n : ℤ) : Triangle C ⥤ Triangle C 
goal: (CategoryTheory.Pretriangulated.Triangle.shiftFunctor C n).obj T =
  CategoryTheory.Pretriangulated.Triangle.mk (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₁)
    (n.negOnePow • (CategoryTheory.shiftFunctor C n).map T.mor₂)
    (n.negOnePow •
      CategoryTheory.CategoryStruct.comp ((CategoryTheory.shiftFunctor C n).map T.mor₃)
        ((CategoryTheory.shiftFunctorComm C 1 n).hom.app T.obj₁))

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctor_map_hom₂
code: /-- The shift functor `Triangle C ⥤ Triangle C` by `n : ℤ` sends a triangle
to the triangle obtained by shifting the objects by `n` in `C` and by
multiplying the three morphisms by `(-1)^n`. -/
@[simps]
noncomputable def Triangle.shiftFunctor (n : ℤ) : Triangle C ⥤ Triangle C 
goal: ∀ {X Y : CategoryTheory.Pretriangulated.Triangle C} (f : X ⟶ Y),
  ((CategoryTheory.Pretriangulated.Triangle.shiftFunctor C n).map f).hom₂ = (CategoryTheory.shiftFunctor C n).map f.hom₂

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero_inv_app_hom₁
code: /-- The canonical isomorphism `Triangle.shiftFunctor C 0 ≅ 𝟭 (Triangle C)`. -/
@[simps!]
noncomputable def Triangle.shiftFunctorZero : Triangle.shiftFunctor C 0 ≅ 𝟭 _ 
goal: ((CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero C).inv.app X).hom₁ =
  (CategoryTheory.shiftFunctorZero C ℤ).inv.app X.obj₁

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero_inv_app_hom₃
code: /-- The canonical isomorphism `Triangle.shiftFunctor C 0 ≅ 𝟭 (Triangle C)`. -/
@[simps!]
noncomputable def Triangle.shiftFunctorZero : Triangle.shiftFunctor C 0 ≅ 𝟭 _ 
goal: ((CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero C).inv.app X).hom₃ =
  (CategoryTheory.shiftFunctorZero C ℤ).inv.app X.obj₃

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero_hom_app_hom₁
code: /-- The canonical isomorphism `Triangle.shiftFunctor C 0 ≅ 𝟭 (Triangle C)`. -/
@[simps!]
noncomputable def Triangle.shiftFunctorZero : Triangle.shiftFunctor C 0 ≅ 𝟭 _ 
goal: ((CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero C).hom.app X).hom₁ =
  (CategoryTheory.shiftFunctorZero C ℤ).hom.app X.obj₁

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero_hom_app_hom₂
code: /-- The canonical isomorphism `Triangle.shiftFunctor C 0 ≅ 𝟭 (Triangle C)`. -/
@[simps!]
noncomputable def Triangle.shiftFunctorZero : Triangle.shiftFunctor C 0 ≅ 𝟭 _ 
goal: ((CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero C).hom.app X).hom₂ =
  (CategoryTheory.shiftFunctorZero C ℤ).hom.app X.obj₂

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero_hom_app_hom₃
code: /-- The canonical isomorphism `Triangle.shiftFunctor C 0 ≅ 𝟭 (Triangle C)`. -/
@[simps!]
noncomputable def Triangle.shiftFunctorZero : Triangle.shiftFunctor C 0 ≅ 𝟭 _ 
goal: ((CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero C).hom.app X).hom₃ =
  (CategoryTheory.shiftFunctorZero C ℤ).hom.app X.obj₃

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero_inv_app_hom₂
code: /-- The canonical isomorphism `Triangle.shiftFunctor C 0 ≅ 𝟭 (Triangle C)`. -/
@[simps!]
noncomputable def Triangle.shiftFunctorZero : Triangle.shiftFunctor C 0 ≅ 𝟭 _ 
goal: ((CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero C).inv.app X).hom₂ =
  (CategoryTheory.shiftFunctorZero C ℤ).inv.app X.obj₂

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero
code: /-- The canonical isomorphism `Triangle.shiftFunctor C 0 ≅ 𝟭 (Triangle C)`. -/
@[simps!]
noncomputable def Triangle.shiftFunctorZero : Triangle.shiftFunctor C 0 ≅ 𝟭 _ 
goal: CategoryTheory.Pretriangulated.Triangle.shiftFunctor C 0 ≅
  CategoryTheory.Functor.id (CategoryTheory.Pretriangulated.Triangle C)

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd'_inv_app_hom₂
code: /-- The canonical isomorphism
`Triangle.shiftFunctor C n ≅ Triangle.shiftFunctor C a ⋙ Triangle.shiftFunctor C b`
when `a + b = n`. -/
@[simps!]
noncomputable def Triangle.shiftFunctorAdd' (a b n : ℤ) (h : a + b = n) :
    Triangle.shiftFunctor C n ≅ Triangle.shiftFunctor C a ⋙ Triangle.shiftFunctor C b 
goal: ((CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd' C a b n h).inv.app X).hom₂ =
  (CategoryTheory.shiftFunctorAdd' C a b n h).inv.app X.obj₂

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd'_hom_app_hom₂
code: /-- The canonical isomorphism
`Triangle.shiftFunctor C n ≅ Triangle.shiftFunctor C a ⋙ Triangle.shiftFunctor C b`
when `a + b = n`. -/
@[simps!]
noncomputable def Triangle.shiftFunctorAdd' (a b n : ℤ) (h : a + b = n) :
    Triangle.shiftFunctor C n ≅ Triangle.shiftFunctor C a ⋙ Triangle.shiftFunctor C b 
goal: ((CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd' C a b n h).hom.app X).hom₂ =
  (CategoryTheory.shiftFunctorAdd' C a b n h).hom.app X.obj₂

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd'_hom_app_hom₁
code: /-- The canonical isomorphism
`Triangle.shiftFunctor C n ≅ Triangle.shiftFunctor C a ⋙ Triangle.shiftFunctor C b`
when `a + b = n`. -/
@[simps!]
noncomputable def Triangle.shiftFunctorAdd' (a b n : ℤ) (h : a + b = n) :
    Triangle.shiftFunctor C n ≅ Triangle.shiftFunctor C a ⋙ Triangle.shiftFunctor C b 
goal: ((CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd' C a b n h).hom.app X).hom₁ =
  (CategoryTheory.shiftFunctorAdd' C a b n h).hom.app X.obj₁

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd'_inv_app_hom₃
code: /-- The canonical isomorphism
`Triangle.shiftFunctor C n ≅ Triangle.shiftFunctor C a ⋙ Triangle.shiftFunctor C b`
when `a + b = n`. -/
@[simps!]
noncomputable def Triangle.shiftFunctorAdd' (a b n : ℤ) (h : a + b = n) :
    Triangle.shiftFunctor C n ≅ Triangle.shiftFunctor C a ⋙ Triangle.shiftFunctor C b 
goal: ((CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd' C a b n h).inv.app X).hom₃ =
  (CategoryTheory.shiftFunctorAdd' C a b n h).inv.app X.obj₃

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd'_hom_app_hom₃
code: /-- The canonical isomorphism
`Triangle.shiftFunctor C n ≅ Triangle.shiftFunctor C a ⋙ Triangle.shiftFunctor C b`
when `a + b = n`. -/
@[simps!]
noncomputable def Triangle.shiftFunctorAdd' (a b n : ℤ) (h : a + b = n) :
    Triangle.shiftFunctor C n ≅ Triangle.shiftFunctor C a ⋙ Triangle.shiftFunctor C b 
goal: ((CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd' C a b n h).hom.app X).hom₃ =
  (CategoryTheory.shiftFunctorAdd' C a b n h).hom.app X.obj₃

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd'_inv_app_hom₁
code: /-- The canonical isomorphism
`Triangle.shiftFunctor C n ≅ Triangle.shiftFunctor C a ⋙ Triangle.shiftFunctor C b`
when `a + b = n`. -/
@[simps!]
noncomputable def Triangle.shiftFunctorAdd' (a b n : ℤ) (h : a + b = n) :
    Triangle.shiftFunctor C n ≅ Triangle.shiftFunctor C a ⋙ Triangle.shiftFunctor C b 
goal: ((CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd' C a b n h).inv.app X).hom₁ =
  (CategoryTheory.shiftFunctorAdd' C a b n h).inv.app X.obj₁

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd'
code: /-- The canonical isomorphism
`Triangle.shiftFunctor C n ≅ Triangle.shiftFunctor C a ⋙ Triangle.shiftFunctor C b`
when `a + b = n`. -/
@[simps!]
noncomputable def Triangle.shiftFunctorAdd' (a b n : ℤ) (h : a + b = n) :
    Triangle.shiftFunctor C n ≅ Triangle.shiftFunctor C a ⋙ Triangle.shiftFunctor C b 
goal: CategoryTheory.Pretriangulated.Triangle.shiftFunctor C n ≅
  (CategoryTheory.Pretriangulated.Triangle.shiftFunctor C a).comp
    (CategoryTheory.Pretriangulated.Triangle.shiftFunctor C b)

full_name: CategoryTheory.Pretriangulated.rotateRotateRotateIso
code: /-- Rotating triangles three times identifies with the shift by `1`. -/
noncomputable def rotateRotateRotateIso :
    rotate C ⋙ rotate C ⋙ rotate C ≅ Triangle.shiftFunctor C 1 
goal: (CategoryTheory.Pretriangulated.rotate C).comp
    ((CategoryTheory.Pretriangulated.rotate C).comp (CategoryTheory.Pretriangulated.rotate C)) ≅
  CategoryTheory.Pretriangulated.Triangle.shiftFunctor C 1

full_name: CategoryTheory.Pretriangulated.invRotateInvRotateInvRotateIso
code: /-- Rotating triangles three times backwards identifies with the shift by `-1`. -/
noncomputable def invRotateInvRotateInvRotateIso :
    invRotate C ⋙ invRotate C ⋙ invRotate C ≅ Triangle.shiftFunctor C (-1) 
goal: (CategoryTheory.Pretriangulated.invRotate C).comp
    ((CategoryTheory.Pretriangulated.invRotate C).comp (CategoryTheory.Pretriangulated.invRotate C)) ≅
  CategoryTheory.Pretriangulated.Triangle.shiftFunctor C (-1)

full_name: CategoryTheory.Pretriangulated.invRotateIsoRotateRotateShiftFunctorNegOne
code: /-- The inverse of the rotation of triangles can be expressed using a double
rotation and the shift by `-1`. -/
noncomputable def invRotateIsoRotateRotateShiftFunctorNegOne :
    invRotate C ≅ rotate C ⋙ rotate C ⋙ Triangle.shiftFunctor C (-1) 
goal: CategoryTheory.Pretriangulated.invRotate C ≅
  (CategoryTheory.Pretriangulated.rotate C).comp
    ((CategoryTheory.Pretriangulated.rotate C).comp (CategoryTheory.Pretriangulated.Triangle.shiftFunctor C (-1)))

full_name: CategoryTheory.Pretriangulated.Triangle.instHasShiftInt
code: noncomputable instance : HasShift (Triangle C) ℤ 
goal: CategoryTheory.HasShift (CategoryTheory.Pretriangulated.Triangle C) ℤ

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctor_eq
code: @[simp]
lemma shiftFunctor_eq (n : ℤ) :
    CategoryTheory.shiftFunctor (Triangle C) n = Triangle.shiftFunctor C n 
goal: CategoryTheory.shiftFunctor (CategoryTheory.Pretriangulated.Triangle C) n =
  CategoryTheory.Pretriangulated.Triangle.shiftFunctor C n

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero_eq
code: @[simp]
lemma shiftFunctorZero_eq :
    CategoryTheory.shiftFunctorZero (Triangle C) ℤ = Triangle.shiftFunctorZero C 
goal: CategoryTheory.shiftFunctorZero (CategoryTheory.Pretriangulated.Triangle C) ℤ =
  CategoryTheory.Pretriangulated.Triangle.shiftFunctorZero C

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd_eq
code: @[simp]
lemma shiftFunctorAdd_eq (a b : ℤ) :
    CategoryTheory.shiftFunctorAdd (Triangle C) a b =
      Triangle.shiftFunctorAdd' C a b _ rfl 
goal: CategoryTheory.shiftFunctorAdd (CategoryTheory.Pretriangulated.Triangle C) a b =
  CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd' C a b (a + b) ⋯

full_name: CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd'_eq
code: @[simp]
lemma shiftFunctorAdd'_eq (a b c : ℤ) (h : a + b = c) :
    CategoryTheory.shiftFunctorAdd' (Triangle C) a b c h =
      Triangle.shiftFunctorAdd' C a b c h 
goal: CategoryTheory.shiftFunctorAdd' (CategoryTheory.Pretriangulated.Triangle C) a b c h =
  CategoryTheory.Pretriangulated.Triangle.shiftFunctorAdd' C a b c h