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

full_name: CochainComplex.mappingConeCompTriangle_mor₂
code: /-- Given two composable morphisms `f : X₁ ⟶ X₂` and `g : X₂ ⟶ X₃` in the category
of cochain complexes, this is the canonical triangle
`mappingCone f ⟶ mappingCone (f ≫ g) ⟶ mappingCone g ⟶ (mappingCone f)⟦1⟧`. -/
@[simps! mor₁ mor₂ mor₃ obj₁ obj₂ obj₃]
noncomputable def mappingConeCompTriangle : Triangle (CochainComplex C ℤ) 
goal: (CochainComplex.mappingConeCompTriangle f g).mor₂ = CochainComplex.mappingCone.map (f ≫ g) g f (𝟙 X₃) ⋯

full_name: CochainComplex.mappingConeCompTriangle_obj₁
code: /-- Given two composable morphisms `f : X₁ ⟶ X₂` and `g : X₂ ⟶ X₃` in the category
of cochain complexes, this is the canonical triangle
`mappingCone f ⟶ mappingCone (f ≫ g) ⟶ mappingCone g ⟶ (mappingCone f)⟦1⟧`. -/
@[simps! mor₁ mor₂ mor₃ obj₁ obj₂ obj₃]
noncomputable def mappingConeCompTriangle : Triangle (CochainComplex C ℤ) 
goal: (CochainComplex.mappingConeCompTriangle f g).obj₁ = CochainComplex.mappingCone f

full_name: CochainComplex.mappingConeCompTriangle_mor₁
code: /-- Given two composable morphisms `f : X₁ ⟶ X₂` and `g : X₂ ⟶ X₃` in the category
of cochain complexes, this is the canonical triangle
`mappingCone f ⟶ mappingCone (f ≫ g) ⟶ mappingCone g ⟶ (mappingCone f)⟦1⟧`. -/
@[simps! mor₁ mor₂ mor₃ obj₁ obj₂ obj₃]
noncomputable def mappingConeCompTriangle : Triangle (CochainComplex C ℤ) 
goal: (CochainComplex.mappingConeCompTriangle f g).mor₁ = CochainComplex.mappingCone.map f (f ≫ g) (𝟙 X₁) g ⋯

full_name: CochainComplex.mappingConeCompTriangle_obj₂
code: /-- Given two composable morphisms `f : X₁ ⟶ X₂` and `g : X₂ ⟶ X₃` in the category
of cochain complexes, this is the canonical triangle
`mappingCone f ⟶ mappingCone (f ≫ g) ⟶ mappingCone g ⟶ (mappingCone f)⟦1⟧`. -/
@[simps! mor₁ mor₂ mor₃ obj₁ obj₂ obj₃]
noncomputable def mappingConeCompTriangle : Triangle (CochainComplex C ℤ) 
goal: (CochainComplex.mappingConeCompTriangle f g).obj₂ = CochainComplex.mappingCone (f ≫ g)

full_name: CochainComplex.mappingConeCompTriangle
code: /-- Given two composable morphisms `f : X₁ ⟶ X₂` and `g : X₂ ⟶ X₃` in the category
of cochain complexes, this is the canonical triangle
`mappingCone f ⟶ mappingCone (f ≫ g) ⟶ mappingCone g ⟶ (mappingCone f)⟦1⟧`. -/
@[simps! mor₁ mor₂ mor₃ obj₁ obj₂ obj₃]
noncomputable def mappingConeCompTriangle : Triangle (CochainComplex C ℤ) 
goal: CategoryTheory.Pretriangulated.Triangle (CochainComplex C ℤ)

full_name: CochainComplex.mappingConeCompTriangle_obj₃
code: /-- Given two composable morphisms `f : X₁ ⟶ X₂` and `g : X₂ ⟶ X₃` in the category
of cochain complexes, this is the canonical triangle
`mappingCone f ⟶ mappingCone (f ≫ g) ⟶ mappingCone g ⟶ (mappingCone f)⟦1⟧`. -/
@[simps! mor₁ mor₂ mor₃ obj₁ obj₂ obj₃]
noncomputable def mappingConeCompTriangle : Triangle (CochainComplex C ℤ) 
goal: (CochainComplex.mappingConeCompTriangle f g).obj₃ = CochainComplex.mappingCone g

full_name: CochainComplex.mappingConeCompTriangle_mor₃
code: /-- Given two composable morphisms `f : X₁ ⟶ X₂` and `g : X₂ ⟶ X₃` in the category
of cochain complexes, this is the canonical triangle
`mappingCone f ⟶ mappingCone (f ≫ g) ⟶ mappingCone g ⟶ (mappingCone f)⟦1⟧`. -/
@[simps! mor₁ mor₂ mor₃ obj₁ obj₂ obj₃]
noncomputable def mappingConeCompTriangle : Triangle (CochainComplex C ℤ) 
goal: (CochainComplex.mappingConeCompTriangle f g).mor₃ =
  (CochainComplex.mappingCone.triangle g).mor₃ ≫
    (CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map (CochainComplex.mappingCone.inr f)

full_name: CochainComplex.mappingConeCompTriangleh
code: /-- Given two composable morphisms `f : X₁ ⟶ X₂` and `g : X₂ ⟶ X₃` in the category
of cochain complexes, this is the canonical triangle
`mappingCone f ⟶ mappingCone (f ≫ g) ⟶ mappingCone g ⟶ (mappingCone f)⟦1⟧`
in the homotopy category. It is a distinguished triangle,
see `HomotopyCategory.mappingConeCompTriangleh_distinguished`. -/
noncomputable def mappingConeCompTriangleh :
    Triangle (HomotopyCategory C (ComplexShape.up ℤ)) 
goal: CategoryTheory.Pretriangulated.Triangle (HomotopyCategory C (ComplexShape.up ℤ))

full_name: CochainComplex.mappingConeCompTriangle_mor₃_naturality
code: @[reassoc]
lemma mappingConeCompTriangle_mor₃_naturality {Y₁ Y₂ Y₃ : CochainComplex C ℤ} (f' : Y₁ ⟶ Y₂)
    (g' : Y₂ ⟶ Y₃) (φ : mk₂ f g ⟶ mk₂ f' g') :
    map g g' (φ.app 1) (φ.app 2) (naturality' φ 1 2) ≫ (mappingConeCompTriangle f' g').mor₃ =
      (mappingConeCompTriangle f g).mor₃ ≫
        (map f f' (φ.app 0) (φ.app 1) (naturality' φ 0 1))⟦1⟧' 
goal: CochainComplex.mappingCone.map g g' (φ.app 1) (φ.app 2) ⋯ ≫ (CochainComplex.mappingConeCompTriangle f' g').mor₃ =
  (CochainComplex.mappingConeCompTriangle f g).mor₃ ≫
    (CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map (CochainComplex.mappingCone.map f f' (φ.app 0) (φ.app 1) ⋯)

full_name: CochainComplex.MappingConeCompHomotopyEquiv.hom
code: /-- Given two composable morphisms `f` and `g` in the category of cochain complexes, this
is the canonical morphism (which is an homotopy equivalence) from `mappingCone g` to
the mapping cone of the morphism `mappingCone f ⟶ mappingCone (f ≫ g)`. -/
noncomputable def hom :
    mappingCone g ⟶ mappingCone (mappingConeCompTriangle f g).mor₁ 
goal: CochainComplex.mappingCone g ⟶ CochainComplex.mappingCone (CochainComplex.mappingConeCompTriangle f g).mor₁

full_name: CochainComplex.MappingConeCompHomotopyEquiv.inv
code: /-- Given two composable morphisms `f` and `g` in the category of cochain complexes, this
is the canonical morphism (which is an homotopy equivalence) from the mapping cone of
the morphism `mappingCone f ⟶ mappingCone (f ≫ g)` to `mappingCone g`. -/
noncomputable def inv : mappingCone (mappingConeCompTriangle f g).mor₁ ⟶ mappingCone g 
goal: CochainComplex.mappingCone (CochainComplex.mappingConeCompTriangle f g).mor₁ ⟶ CochainComplex.mappingCone g

full_name: CochainComplex.MappingConeCompHomotopyEquiv.hom_inv_id
code: @[reassoc (attr := simp)]
lemma hom_inv_id : hom f g ≫ inv f g = 𝟙 _ 
goal: CochainComplex.MappingConeCompHomotopyEquiv.hom f g ≫ CochainComplex.MappingConeCompHomotopyEquiv.inv f g =
  𝟙 (CochainComplex.mappingCone g)

full_name: CochainComplex.MappingConeCompHomotopyEquiv.homotopyInvHomId
code: /-- Given two composable morphisms `f` and `g` in the category of cochain complexes,
this is the `homotopyInvHomId` field of the homotopy equivalence
`mappingConeCompHomotopyEquiv f g` between `mappingCone g` and the mapping cone of
the morphism `mappingCone f ⟶ mappingCone (f ≫ g)`. -/
noncomputable def homotopyInvHomId : Homotopy (inv f g ≫ hom f g) (𝟙 _) 
goal: Homotopy (CochainComplex.MappingConeCompHomotopyEquiv.inv f g ≫ CochainComplex.MappingConeCompHomotopyEquiv.hom f g)
  (𝟙 (CochainComplex.mappingCone (CochainComplex.mappingConeCompTriangle f g).mor₁))

full_name: CochainComplex.mappingConeCompHomotopyEquiv
code: /-- Given two composable morphisms `f` and `g` in the category of cochain complexes,
this is the homotopy equivalence `mappingConeCompHomotopyEquiv f g`
between `mappingCone g` and the mapping cone of
the morphism `mappingCone f ⟶ mappingCone (f ≫ g)`. -/
noncomputable def mappingConeCompHomotopyEquiv : HomotopyEquiv (mappingCone g)
    (mappingCone (mappingConeCompTriangle f g).mor₁) 
goal: HomotopyEquiv (CochainComplex.mappingCone g)
  (CochainComplex.mappingCone (CochainComplex.mappingConeCompTriangle f g).mor₁)

full_name: CochainComplex.mappingConeCompHomotopyEquiv_hom_inv_id
code: @[reassoc (attr := simp)]
lemma mappingConeCompHomotopyEquiv_hom_inv_id :
    (mappingConeCompHomotopyEquiv f g).hom ≫
      (mappingConeCompHomotopyEquiv f g).inv = 𝟙 _ 
goal: (CochainComplex.mappingConeCompHomotopyEquiv f g).hom ≫ (CochainComplex.mappingConeCompHomotopyEquiv f g).inv =
  𝟙 (CochainComplex.mappingCone g)

full_name: CochainComplex.mappingConeCompHomotopyEquiv_comm₁
code: @[reassoc]
lemma mappingConeCompHomotopyEquiv_comm₁ :
    inr (map f (f ≫ g) (𝟙 X₁) g (by rw [id_comp])) ≫
      (mappingConeCompHomotopyEquiv f g).inv = (mappingConeCompTriangle f g).mor₂ 
goal: CochainComplex.mappingCone.inr (CochainComplex.mappingCone.map f (f ≫ g) (𝟙 X₁) g ⋯) ≫
    (CochainComplex.mappingConeCompHomotopyEquiv f g).inv =
  (CochainComplex.mappingConeCompTriangle f g).mor₂

full_name: CochainComplex.mappingConeCompHomotopyEquiv_comm₂
code: @[reassoc]
lemma mappingConeCompHomotopyEquiv_comm₂ :
    (mappingConeCompHomotopyEquiv f g).hom ≫
      (triangle (mappingConeCompTriangle f g).mor₁).mor₃ =
      (mappingConeCompTriangle f g).mor₃ 
goal: (CochainComplex.mappingConeCompHomotopyEquiv f g).hom ≫
    (CochainComplex.mappingCone.triangle (CochainComplex.mappingConeCompTriangle f g).mor₁).mor₃ =
  (CochainComplex.mappingConeCompTriangle f g).mor₃

full_name: CochainComplex.mappingConeCompTriangleh_comm₁
code: @[reassoc (attr := simp)]
lemma mappingConeCompTriangleh_comm₁ :
    (mappingConeCompTriangleh f g).mor₂ ≫
      (HomotopyCategory.quotient _ _).map (mappingConeCompHomotopyEquiv f g).hom =
    (HomotopyCategory.quotient _ _).map (mappingCone.inr _) 
goal: (CochainComplex.mappingConeCompTriangleh f g).mor₂ ≫
    (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map (CochainComplex.mappingConeCompHomotopyEquiv f g).hom =
  (HomotopyCategory.quotient C (ComplexShape.up ℤ)).map
    (CochainComplex.mappingCone.inr (CochainComplex.mappingConeCompTriangle f g).mor₁)

full_name: HomotopyCategory.mappingConeCompTriangleh_distinguished
code: lemma mappingConeCompTriangleh_distinguished :
    (CochainComplex.mappingConeCompTriangleh f g) ∈
      distTriang (HomotopyCategory C (ComplexShape.up ℤ)) 
goal: CochainComplex.mappingConeCompTriangleh f g ∈ CategoryTheory.Pretriangulated.distinguishedTriangles

full_name: HomotopyCategory.instIsTriangulatedIntUp
code: noncomputable instance : IsTriangulated (HomotopyCategory C (ComplexShape.up ℤ)) 
goal: CategoryTheory.IsTriangulated (HomotopyCategory C (ComplexShape.up ℤ))