File: Mathlib/Algebra/Homology/HomotopyCategory/Pretriangulated.lean

full_name: CochainComplex.mappingCone.triangle
code: /-- The standard triangle `K ⟶ L ⟶ mappingCone φ ⟶ K⟦(1 : ℤ)⟧` in `CochainComplex C ℤ`
attached to a morphism `φ : K ⟶ L`. It involves `φ`, `inr φ : L ⟶ mappingCone φ` and
the morphism induced by the `1`-cocycle `-mappingCone.fst φ`. -/
@[simps! obj₁ obj₂ obj₃ mor₁ mor₂]
noncomputable def triangle : Triangle (CochainComplex C ℤ) 
goal: CategoryTheory.Pretriangulated.Triangle (CochainComplex C ℤ)

full_name: CochainComplex.mappingCone.triangle_obj₃
code: /-- The standard triangle `K ⟶ L ⟶ mappingCone φ ⟶ K⟦(1 : ℤ)⟧` in `CochainComplex C ℤ`
attached to a morphism `φ : K ⟶ L`. It involves `φ`, `inr φ : L ⟶ mappingCone φ` and
the morphism induced by the `1`-cocycle `-mappingCone.fst φ`. -/
@[simps! obj₁ obj₂ obj₃ mor₁ mor₂]
noncomputable def triangle : Triangle (CochainComplex C ℤ) 
goal: (CochainComplex.mappingCone.triangle φ).obj₃ = CochainComplex.mappingCone φ

full_name: CochainComplex.mappingCone.triangle_mor₁
code: /-- The standard triangle `K ⟶ L ⟶ mappingCone φ ⟶ K⟦(1 : ℤ)⟧` in `CochainComplex C ℤ`
attached to a morphism `φ : K ⟶ L`. It involves `φ`, `inr φ : L ⟶ mappingCone φ` and
the morphism induced by the `1`-cocycle `-mappingCone.fst φ`. -/
@[simps! obj₁ obj₂ obj₃ mor₁ mor₂]
noncomputable def triangle : Triangle (CochainComplex C ℤ) 
goal: (CochainComplex.mappingCone.triangle φ).mor₁ = φ

full_name: CochainComplex.mappingCone.triangle_mor₂
code: /-- The standard triangle `K ⟶ L ⟶ mappingCone φ ⟶ K⟦(1 : ℤ)⟧` in `CochainComplex C ℤ`
attached to a morphism `φ : K ⟶ L`. It involves `φ`, `inr φ : L ⟶ mappingCone φ` and
the morphism induced by the `1`-cocycle `-mappingCone.fst φ`. -/
@[simps! obj₁ obj₂ obj₃ mor₁ mor₂]
noncomputable def triangle : Triangle (CochainComplex C ℤ) 
goal: (CochainComplex.mappingCone.triangle φ).mor₂ = CochainComplex.mappingCone.inr φ

full_name: CochainComplex.mappingCone.triangle_obj₁
code: /-- The standard triangle `K ⟶ L ⟶ mappingCone φ ⟶ K⟦(1 : ℤ)⟧` in `CochainComplex C ℤ`
attached to a morphism `φ : K ⟶ L`. It involves `φ`, `inr φ : L ⟶ mappingCone φ` and
the morphism induced by the `1`-cocycle `-mappingCone.fst φ`. -/
@[simps! obj₁ obj₂ obj₃ mor₁ mor₂]
noncomputable def triangle : Triangle (CochainComplex C ℤ) 
goal: (CochainComplex.mappingCone.triangle φ).obj₁ = K

full_name: CochainComplex.mappingCone.triangle_obj₂
code: /-- The standard triangle `K ⟶ L ⟶ mappingCone φ ⟶ K⟦(1 : ℤ)⟧` in `CochainComplex C ℤ`
attached to a morphism `φ : K ⟶ L`. It involves `φ`, `inr φ : L ⟶ mappingCone φ` and
the morphism induced by the `1`-cocycle `-mappingCone.fst φ`. -/
@[simps! obj₁ obj₂ obj₃ mor₁ mor₂]
noncomputable def triangle : Triangle (CochainComplex C ℤ) 
goal: (CochainComplex.mappingCone.triangle φ).obj₂ = L

full_name: CochainComplex.mappingCone.inl_v_triangle_mor₃_f
code: @[reassoc (attr := simp)]
lemma inl_v_triangle_mor₃_f (p q : ℤ) (hpq : p + (-1) = q) :
    (inl φ).v p q hpq ≫ (triangle φ).mor₃.f q =
      -(K.shiftFunctorObjXIso 1 q p (by rw [← hpq, neg_add_cancel_right])).inv 
goal: (CochainComplex.mappingCone.inl φ).v p q hpq ≫ (CochainComplex.mappingCone.triangle φ).mor₃.f q =
  -(K.shiftFunctorObjXIso 1 q p ⋯).inv

full_name: CochainComplex.mappingCone.inr_f_triangle_mor₃_f
code: @[reassoc (attr := simp)]
lemma inr_f_triangle_mor₃_f (p : ℤ) : (inr φ).f p ≫ (triangle φ).mor₃.f p = 0 
goal: (CochainComplex.mappingCone.inr φ).f p ≫ (CochainComplex.mappingCone.triangle φ).mor₃.f p = 0

full_name: CochainComplex.mappingCone.inr_triangleδ
code: @[reassoc (attr := simp)]
lemma inr_triangleδ : inr φ ≫ (triangle φ).mor₃ = 0 
goal: CochainComplex.mappingCone.inr φ ≫ (CochainComplex.mappingCone.triangle φ).mor₃ = 0

full_name: CochainComplex.mappingCone.triangleh
code: /-- The (distinguished) triangle in the homotopy category that is associated to
a morphism `φ : K ⟶ L` in the category `CochainComplex C ℤ`. -/
noncomputable abbrev triangleh : Triangle (HomotopyCategory C (ComplexShape.up ℤ)) 
goal: CategoryTheory.Pretriangulated.Triangle (HomotopyCategory C (ComplexShape.up ℤ))

full_name: CochainComplex.mappingCone.homotopyToZeroOfId
code: /-- The mapping cone of the identity is contractible. -/
noncomputable def homotopyToZeroOfId : Homotopy (𝟙 (mappingCone (𝟙 K))) 0 
goal: Homotopy (𝟙 (CochainComplex.mappingCone (𝟙 K))) 0

full_name: CochainComplex.mappingCone.mapOfHomotopy
code: /-- The morphism `mappingCone φ₁ ⟶ mappingCone φ₂` that is induced by a square that
is commutative up to homotopy. -/
noncomputable def mapOfHomotopy :
    mappingCone φ₁ ⟶ mappingCone φ₂ 
goal: CochainComplex.mappingCone φ₁ ⟶ CochainComplex.mappingCone φ₂

full_name: CochainComplex.mappingCone.triangleMapOfHomotopy_comm₂
code: @[reassoc]
lemma triangleMapOfHomotopy_comm₂ :
    inr φ₁ ≫ mapOfHomotopy H = b ≫ inr φ₂ 
goal: CochainComplex.mappingCone.inr φ₁ ≫ CochainComplex.mappingCone.mapOfHomotopy H = b ≫ CochainComplex.mappingCone.inr φ₂

full_name: CochainComplex.mappingCone.triangleMapOfHomotopy_comm₃
code: @[reassoc]
lemma triangleMapOfHomotopy_comm₃ :
    mapOfHomotopy H ≫ (triangle φ₂).mor₃ = (triangle φ₁).mor₃ ≫ a⟦1⟧' 
goal: CochainComplex.mappingCone.mapOfHomotopy H ≫ (CochainComplex.mappingCone.triangle φ₂).mor₃ =
  (CochainComplex.mappingCone.triangle φ₁).mor₃ ≫ (CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map a

full_name: CochainComplex.mappingCone.trianglehMapOfHomotopy
code: /-- The morphism `triangleh φ₁ ⟶ triangleh φ₂` that is induced by a square that
is commutative up to homotopy. -/
@[simps]
noncomputable def trianglehMapOfHomotopy :
    triangleh φ₁ ⟶ triangleh φ₂ 
goal: CochainComplex.mappingCone.triangleh φ₁ ⟶ CochainComplex.mappingCone.triangleh φ₂

full_name: CochainComplex.mappingCone.trianglehMapOfHomotopy_hom₁
code: /-- The morphism `triangleh φ₁ ⟶ triangleh φ₂` that is induced by a square that
is commutative up to homotopy. -/
@[simps]
noncomputable def trianglehMapOfHomotopy :
    triangleh φ₁ ⟶ triangleh φ₂ 
goal: (CochainComplex.mappingCone.trianglehMapOfHomotopy H).hom₁ = (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map a

full_name: CochainComplex.mappingCone.trianglehMapOfHomotopy_hom₂
code: /-- The morphism `triangleh φ₁ ⟶ triangleh φ₂` that is induced by a square that
is commutative up to homotopy. -/
@[simps]
noncomputable def trianglehMapOfHomotopy :
    triangleh φ₁ ⟶ triangleh φ₂ 
goal: (CochainComplex.mappingCone.trianglehMapOfHomotopy H).hom₂ = (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map b

full_name: CochainComplex.mappingCone.trianglehMapOfHomotopy_hom₃
code: /-- The morphism `triangleh φ₁ ⟶ triangleh φ₂` that is induced by a square that
is commutative up to homotopy. -/
@[simps]
noncomputable def trianglehMapOfHomotopy :
    triangleh φ₁ ⟶ triangleh φ₂ 
goal: (CochainComplex.mappingCone.trianglehMapOfHomotopy H).hom₃ =
  (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (CochainComplex.mappingCone.mapOfHomotopy H)

full_name: CochainComplex.mappingCone.map
code: /-- The morphism `mappingCone φ₁ ⟶ mappingCone φ₂` that is induced by a commutative square. -/
noncomputable def map : mappingCone φ₁ ⟶ mappingCone φ₂ 
goal: CochainComplex.mappingCone φ₁ ⟶ CochainComplex.mappingCone φ₂

full_name: CochainComplex.mappingCone.map_eq_mapOfHomotopy
code: lemma map_eq_mapOfHomotopy : map φ₁ φ₂ a b comm = mapOfHomotopy (Homotopy.ofEq comm) 
goal: CochainComplex.mappingCone.map φ₁ φ₂ a b comm = CochainComplex.mappingCone.mapOfHomotopy (Homotopy.ofEq comm)

full_name: CochainComplex.mappingCone.map_id
code: lemma map_id : map φ φ (𝟙 _) (𝟙 _) (by rw [id_comp, comp_id]) = 𝟙 _ 
goal: CochainComplex.mappingCone.map φ φ (𝟙 K) (𝟙 L) ⋯ = 𝟙 (CochainComplex.mappingCone φ)

full_name: CochainComplex.mappingCone.map_comp
code: @[reassoc]
lemma map_comp : map φ₁ φ₃ (a ≫ a') (b ≫ b') (by rw [reassoc_of% comm, comm', assoc]) =
    map φ₁ φ₂ a b comm ≫ map φ₂ φ₃ a' b' comm' 
goal: CochainComplex.mappingCone.map φ₁ φ₃ (a ≫ a') (b ≫ b') ⋯ =
  CochainComplex.mappingCone.map φ₁ φ₂ a b comm ≫ CochainComplex.mappingCone.map φ₂ φ₃ a' b' comm'

full_name: CochainComplex.mappingCone.triangleMap_hom₃
code: /-- The morphism `triangle φ₁ ⟶ triangle φ₂` that is induced by a commutative square. -/
@[simps]
noncomputable def triangleMap :
    triangle φ₁ ⟶ triangle φ₂ 
goal: (CochainComplex.mappingCone.triangleMap φ₁ φ₂ a b comm).hom₃ = CochainComplex.mappingCone.map φ₁ φ₂ a b comm

full_name: CochainComplex.mappingCone.triangleMap_hom₂
code: /-- The morphism `triangle φ₁ ⟶ triangle φ₂` that is induced by a commutative square. -/
@[simps]
noncomputable def triangleMap :
    triangle φ₁ ⟶ triangle φ₂ 
goal: (CochainComplex.mappingCone.triangleMap φ₁ φ₂ a b comm).hom₂ = b

full_name: CochainComplex.mappingCone.triangleMap
code: /-- The morphism `triangle φ₁ ⟶ triangle φ₂` that is induced by a commutative square. -/
@[simps]
noncomputable def triangleMap :
    triangle φ₁ ⟶ triangle φ₂ 
goal: CochainComplex.mappingCone.triangle φ₁ ⟶ CochainComplex.mappingCone.triangle φ₂

full_name: CochainComplex.mappingCone.triangleMap_hom₁
code: /-- The morphism `triangle φ₁ ⟶ triangle φ₂` that is induced by a commutative square. -/
@[simps]
noncomputable def triangleMap :
    triangle φ₁ ⟶ triangle φ₂ 
goal: (CochainComplex.mappingCone.triangleMap φ₁ φ₂ a b comm).hom₁ = a

full_name: CochainComplex.mappingCone.rotateHomotopyEquiv
code: /-- Given `φ : K ⟶ L`, `K⟦(1 : ℤ)⟧` is homotopy equivalent to
the mapping cone of `inr φ : L ⟶ mappingCone φ`. -/
noncomputable def rotateHomotopyEquiv :
    HomotopyEquiv (K⟦(1 : ℤ)⟧) (mappingCone (inr φ)) 
goal: HomotopyEquiv ((CategoryTheory.shiftFunctor (HomologicalComplex C (ComplexShape.up ℤ)) 1).obj K)
  (CochainComplex.mappingCone (CochainComplex.mappingCone.inr φ))

full_name: CochainComplex.mappingCone.rotateHomotopyEquivComm₂Homotopy
code: /-- Auxiliary definition for `rotateTrianglehIso`. -/
noncomputable def rotateHomotopyEquivComm₂Homotopy :
  Homotopy ((triangle φ).mor₃ ≫ (rotateHomotopyEquiv φ).hom)
    (inr (CochainComplex.mappingCone.inr φ)) 
goal: Homotopy ((CochainComplex.mappingCone.triangle φ).mor₃ ≫ (CochainComplex.mappingCone.rotateHomotopyEquiv φ).hom)
  (CochainComplex.mappingCone.inr (CochainComplex.mappingCone.inr φ))

full_name: CochainComplex.mappingCone.rotateHomotopyEquiv_comm₂
code: @[reassoc (attr := simp)]
lemma rotateHomotopyEquiv_comm₂ :
    (HomotopyCategory.quotient _ _ ).map (triangle φ).mor₃ ≫
      (HomotopyCategory.quotient _ _ ).map (rotateHomotopyEquiv φ).hom =
      (HomotopyCategory.quotient _ _ ).map (inr (inr φ)) 
goal: (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (CochainComplex.mappingCone.triangle φ).mor₃ ≫
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (CochainComplex.mappingCone.rotateHomotopyEquiv φ).hom =
  (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map
    (CochainComplex.mappingCone.inr (CochainComplex.mappingCone.inr φ))

full_name: CochainComplex.mappingCone.rotateHomotopyEquiv_comm₃
code: @[reassoc (attr := simp)]
lemma rotateHomotopyEquiv_comm₃ :
    (rotateHomotopyEquiv φ).hom ≫ (triangle (inr φ)).mor₃ = -φ⟦1⟧' 
goal: (CochainComplex.mappingCone.rotateHomotopyEquiv φ).hom ≫
    (CochainComplex.mappingCone.triangle (CochainComplex.mappingCone.inr φ)).mor₃ =
  -(CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map φ

full_name: CochainComplex.mappingCone.rotateTrianglehIso
code: /-- The canonical isomorphism of triangles `(triangleh φ).rotate ≅ (triangleh (inr φ))`. -/
noncomputable def rotateTrianglehIso :
    (triangleh φ).rotate ≅ (triangleh (inr φ)) 
goal: (CochainComplex.mappingCone.triangleh φ).rotate ≅
  CochainComplex.mappingCone.triangleh (CochainComplex.mappingCone.inr φ)

full_name: CochainComplex.mappingCone.shiftIso
code: /-- The canonical isomorphism `(mappingCone φ)⟦n⟧ ≅ mappingCone (φ⟦n⟧')`. -/
noncomputable def shiftIso (n : ℤ) : (mappingCone φ)⟦n⟧ ≅ mappingCone (φ⟦n⟧') 
goal: (CategoryTheory.shiftFunctor (HomologicalComplex C (ComplexShape.up ℤ)) n).obj (CochainComplex.mappingCone φ) ≅
  CochainComplex.mappingCone ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) n).map φ)

full_name: CochainComplex.mappingCone.shiftTriangleIso
code: /-- The canonical isomorphism `(triangle φ)⟦n⟧ ≅ triangle (φ⟦n⟧')`. -/
noncomputable def shiftTriangleIso (n : ℤ) :
    (Triangle.shiftFunctor _ n).obj (triangle φ) ≅ triangle (φ⟦n⟧') 
goal: (CategoryTheory.Pretriangulated.Triangle.shiftFunctor (CochainComplex C ℤ) n).obj
    (CochainComplex.mappingCone.triangle φ) ≅
  CochainComplex.mappingCone.triangle ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) n).map φ)

full_name: CochainComplex.mappingCone.shiftTrianglehIso
code: /-- The canonical isomorphism `(triangleh φ)⟦n⟧ ≅ triangleh (φ⟦n⟧')`. -/
noncomputable def shiftTrianglehIso (n : ℤ) :
    (Triangle.shiftFunctor _ n).obj (triangleh φ) ≅ triangleh (φ⟦n⟧') 
goal: (CategoryTheory.Pretriangulated.Triangle.shiftFunctor (HomotopyCategory C (ComplexShape.up ℤ)) n).obj
    (CochainComplex.mappingCone.triangleh φ) ≅
  CochainComplex.mappingCone.triangleh ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) n).map φ)

full_name: CochainComplex.mappingCone.map_δ
code: lemma map_δ :
    (G.mapHomologicalComplex (ComplexShape.up ℤ)).map (triangle φ).mor₃ ≫
      NatTrans.app ((Functor.mapHomologicalComplex G (ComplexShape.up ℤ)).commShiftIso  1).hom K =
    (mapHomologicalComplexIso φ G).hom ≫
      (triangle ((G.mapHomologicalComplex (ComplexShape.up ℤ)).map φ)).mor₃ 
goal: (G.mapHomologicalComplex (ComplexShape.up ℤ)).map (CochainComplex.mappingCone.triangle φ).mor₃ ≫
    ((G.mapHomologicalComplex (ComplexShape.up ℤ)).commShiftIso 1).hom.app K =
  (CochainComplex.mappingCone.mapHomologicalComplexIso φ G).hom ≫
    (CochainComplex.mappingCone.triangle ((G.mapHomologicalComplex (ComplexShape.up ℤ)).map φ)).mor₃

full_name: CochainComplex.mappingCone.mapTriangleIso
code: /-- If `φ : K ⟶ L` is a morphism of cochain complexes in `C` and `G : C ⥤ D` is an
additive functor, then the image by `G` of the triangle `triangle φ` identifies to
the triangle associated to the image of `φ` by `G`. -/
noncomputable def mapTriangleIso :
    (G.mapHomologicalComplex (ComplexShape.up ℤ)).mapTriangle.obj (triangle φ) ≅
      triangle ((G.mapHomologicalComplex (ComplexShape.up ℤ)).map φ) 
goal: (G.mapHomologicalComplex (ComplexShape.up ℤ)).mapTriangle.obj (CochainComplex.mappingCone.triangle φ) ≅
  CochainComplex.mappingCone.triangle ((G.mapHomologicalComplex (ComplexShape.up ℤ)).map φ)

full_name: CochainComplex.mappingCone.mapTrianglehIso
code: /-- If `φ : K ⟶ L` is a morphism of cochain complexes in `C` and `G : C ⥤ D` is an
additive functor, then the image by `G` of the triangle `triangleh φ` identifies to
the triangle associated to the image of `φ` by `G`. -/
noncomputable def mapTrianglehIso :
    (G.mapHomotopyCategory (ComplexShape.up ℤ)).mapTriangle.obj (triangleh φ) ≅
      triangleh ((G.mapHomologicalComplex (ComplexShape.up ℤ)).map φ) 
goal: (G.mapHomotopyCategory (ComplexShape.up ℤ)).mapTriangle.obj (CochainComplex.mappingCone.triangleh φ) ≅
  CochainComplex.mappingCone.triangleh ((G.mapHomologicalComplex (ComplexShape.up ℤ)).map φ)

full_name: HomotopyCategory.Pretriangulated.distinguishedTriangles
code: /-- A triangle in `HomotopyCategory C (ComplexShape.up ℤ)` is distinguished if it is isomorphic to
the triangle `CochainComplex.mappingCone.triangleh φ` for some morphism of cochain
complexes `φ`. -/
def distinguishedTriangles : Set (Triangle (HomotopyCategory C (ComplexShape.up ℤ))) 
goal: Set (CategoryTheory.Pretriangulated.Triangle (HomotopyCategory C (ComplexShape.up ℤ)))

full_name: HomotopyCategory.Pretriangulated.isomorphic_distinguished
code: lemma isomorphic_distinguished (T₁ : Triangle (HomotopyCategory C (ComplexShape.up ℤ)))
    (hT₁ : T₁ ∈ distinguishedTriangles C) (T₂ : Triangle (HomotopyCategory C (ComplexShape.up ℤ)))
    (e : T₂ ≅ T₁) : T₂ ∈ distinguishedTriangles C 
goal: T₂ ∈ HomotopyCategory.Pretriangulated.distinguishedTriangles C

full_name: HomotopyCategory.Pretriangulated.contractible_distinguished
code: lemma contractible_distinguished (X : HomotopyCategory C (ComplexShape.up ℤ)) :
    Pretriangulated.contractibleTriangle X ∈ distinguishedTriangles C 
goal: CategoryTheory.Pretriangulated.contractibleTriangle X ∈ HomotopyCategory.Pretriangulated.distinguishedTriangles C

full_name: HomotopyCategory.Pretriangulated.distinguished_cocone_triangle
code: lemma distinguished_cocone_triangle {X Y : HomotopyCategory C (ComplexShape.up ℤ)} (f : X ⟶ Y) :
    ∃ (Z : HomotopyCategory C (ComplexShape.up ℤ)) (g : Y ⟶ Z) (h : Z ⟶ X⟦1⟧),
      Triangle.mk f g h ∈ distinguishedTriangles C 
goal: ∃ Z g h, CategoryTheory.Pretriangulated.Triangle.mk f g h ∈ HomotopyCategory.Pretriangulated.distinguishedTriangles C

full_name: HomotopyCategory.Pretriangulated.rotate_distinguished_triangle'
code: lemma rotate_distinguished_triangle' (T : Triangle (HomotopyCategory C (ComplexShape.up ℤ)))
    (hT : T ∈ distinguishedTriangles C) : T.rotate ∈ distinguishedTriangles C 
goal: T.rotate ∈ HomotopyCategory.Pretriangulated.distinguishedTriangles C

full_name: HomotopyCategory.Pretriangulated.shift_distinguished_triangle
code: lemma shift_distinguished_triangle (T : Triangle (HomotopyCategory C (ComplexShape.up ℤ)))
    (hT : T ∈ distinguishedTriangles C) (n : ℤ) :
      (Triangle.shiftFunctor _ n).obj T ∈ distinguishedTriangles C 
goal: (CategoryTheory.Pretriangulated.Triangle.shiftFunctor (HomotopyCategory C (ComplexShape.up ℤ)) n).obj T ∈
  HomotopyCategory.Pretriangulated.distinguishedTriangles C

full_name: HomotopyCategory.Pretriangulated.invRotate_distinguished_triangle'
code: lemma invRotate_distinguished_triangle' (T : Triangle (HomotopyCategory C (ComplexShape.up ℤ)))
    (hT : T ∈ distinguishedTriangles C) : T.invRotate ∈ distinguishedTriangles C 
goal: T.invRotate ∈ HomotopyCategory.Pretriangulated.distinguishedTriangles C

full_name: HomotopyCategory.Pretriangulated.rotate_distinguished_triangle
code: lemma rotate_distinguished_triangle (T : Triangle (HomotopyCategory C (ComplexShape.up ℤ))) :
    T ∈ distinguishedTriangles C ↔ T.rotate ∈ distinguishedTriangles C 
goal: T ∈ HomotopyCategory.Pretriangulated.distinguishedTriangles C ↔
  T.rotate ∈ HomotopyCategory.Pretriangulated.distinguishedTriangles C

full_name: HomotopyCategory.Pretriangulated.complete_distinguished_triangle_morphism
code: lemma complete_distinguished_triangle_morphism
    (T₁ T₂ : Triangle (HomotopyCategory C (ComplexShape.up ℤ)))
    (hT₁ : T₁ ∈ distinguishedTriangles C) (hT₂ : T₂ ∈ distinguishedTriangles C)
    (a : T₁.obj₁ ⟶ T₂.obj₁) (b : T₁.obj₂ ⟶ T₂.obj₂) (fac : T₁.mor₁ ≫ b = a ≫ T₂.mor₁) :
    ∃ (c : T₁.obj₃ ⟶ T₂.obj₃), T₁.mor₂ ≫ c = b ≫ T₂.mor₂ ∧
      T₁.mor₃ ≫ a⟦(1 : ℤ)⟧' = c ≫ T₂.mor₃ 
goal: ∃ c,
  T₁.mor₂ ≫ c = b ≫ T₂.mor₂ ∧
    T₁.mor₃ ≫ (CategoryTheory.shiftFunctor (HomotopyCategory C (ComplexShape.up ℤ)) 1).map a = c ≫ T₂.mor₃

full_name: HomotopyCategory.instPretriangulatedIntUp
code: instance : Pretriangulated (HomotopyCategory C (ComplexShape.up ℤ)) 
goal: CategoryTheory.Pretriangulated (HomotopyCategory C (ComplexShape.up ℤ))

full_name: HomotopyCategory.mappingCone_triangleh_distinguished
code: lemma mappingCone_triangleh_distinguished {X Y : CochainComplex C ℤ} (f : X ⟶ Y) :
    CochainComplex.mappingCone.triangleh f ∈ distTriang (HomotopyCategory _ _) 
goal: CochainComplex.mappingCone.triangleh f ∈ CategoryTheory.Pretriangulated.distinguishedTriangles

full_name: HomotopyCategory.instIsTriangulatedIntUpMapHomotopyCategory
code: instance (G : C ⥤ D) [G.Additive] :
    (G.mapHomotopyCategory (ComplexShape.up ℤ)).IsTriangulated 
goal: (G.mapHomotopyCategory (ComplexShape.up ℤ)).IsTriangulated