-- Module: Mathlib.Algebra.Homology.HomotopyCategory.MappingCone
Goal:
C : Type u_1
D : Type u_2
inst : Category.{v, u_1} C
inst_1 : Category.{v', u_2} D
inst_2 : Preadditive.{v, u_1} C
inst_3 : Preadditive.{v', u_2} D
F G : CochainComplex.{v, u_1, 0} C ℤ
φ : F ⟶ G
inst_4 : HasHomotopyCofiber φ
H : CategoryTheory.Functor.{v, v', u_1, u_2} C D
inst_5 : H.Additive
inst_6 :
  HasHomotopyCofiber (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
    (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)
n : ℤ
simp :
  HAdd.hAdd (α :=
          H.obj ((mappingCone φ).X n) ⟶
            X
              (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
                (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
              n)
          (H.map (Cochain.v (↑(fst φ) : Cochain (mappingCone φ) F 1) n (n + 1) ⋯) ≫
            Cochain.v (inl (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) (n + 1) n ⋯)
          (H.map (Cochain.v (snd φ) n n ⋯) ≫
            Hom.f (inr (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) n) ≫
        (-Cochain.v
              (↑(fst (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) :
                Cochain (mappingCone ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ))
                  ((H.mapHomologicalComplex (ComplexShape.up ℤ)).obj F) 1)
              n (n + 1) ⋯ ≫
            d (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F) (n + 1) (n + 2)) =
      d (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) (mappingCone φ)) n (n + 1) ≫
        HAdd.hAdd (α :=
            H.obj ((mappingCone φ).X (n + 1)) ⟶
              X
                (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
                  (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
                (n + 1))
            (H.map (Cochain.v (↑(fst φ) : Cochain (mappingCone φ) F 1) (n + 1) (n + 2) ⋯) ≫
              Cochain.v (inl (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) (n + 2)
                (n + 1) ⋯)
            (H.map (Cochain.v (snd φ) (n + 1) (n + 1) ⋯) ≫
              Hom.f (inr (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) (n + 1)) ≫
          Cochain.v
            (↑(fst (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) :
              Cochain (mappingCone ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ))
                ((H.mapHomologicalComplex (ComplexShape.up ℤ)).obj F) 1)
            (n + 1) (n + 2) ⋯ ∧
    HAdd.hAdd (α :=
          H.obj ((mappingCone φ).X n) ⟶
            X
              (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
                (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
              n)
          (H.map (Cochain.v (↑(fst φ) : Cochain (mappingCone φ) F 1) n (n + 1) ⋯) ≫
            Cochain.v (inl (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) (n + 1) n ⋯)
          (H.map (Cochain.v (snd φ) n n ⋯) ≫
            Hom.f (inr (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) n) ≫
        HAdd.hAdd (α :=
          X
              (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
                (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
              n ⟶
            X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) G) (n + 1))
          (Cochain.v
              (↑(fst (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) :
                Cochain (mappingCone ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ))
                  ((H.mapHomologicalComplex (ComplexShape.up ℤ)).obj F) 1)
              n (n + 1) ⋯ ≫
            Hom.f (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ) (n + 1))
          (Cochain.v (snd (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) n n ⋯ ≫
            d (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) G) n (n + 1)) =
      d (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) (mappingCone φ)) n (n + 1) ≫
        HAdd.hAdd (α :=
            H.obj ((mappingCone φ).X (n + 1)) ⟶
              X
                (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
                  (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
                (n + 1))
            (H.map (Cochain.v (↑(fst φ) : Cochain (mappingCone φ) F 1) (n + 1) (n + 2) ⋯) ≫
              Cochain.v (inl (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) (n + 2)
                (n + 1) ⋯)
            (H.map (Cochain.v (snd φ) (n + 1) (n + 1) ⋯) ≫
              Hom.f (inr (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) (n + 1)) ≫
          Cochain.v (snd (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) (n + 1) (n + 1) ⋯
⊢ Eq (α :=
      X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) (mappingCone φ)) n ⟶
        X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F) (n + 2))
      (CategoryStruct.comp (Y :=
          X
            (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
              (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
            n)
          (Iso.hom (mapHomologicalComplexXIso φ H n) :
            X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) (mappingCone φ)) n ⟶
              X
                (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
                  (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
                n)
          (-Cochain.v
                  (↑(fst (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) :
                    Cochain (mappingCone ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ))
                      ((H.mapHomologicalComplex (ComplexShape.up ℤ)).obj F) 1)
                  n (n + 1) ⋯ ≫
                d (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F) (n + 1) (n + 2) :
            X
                (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
                  (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
                n ⟶
              X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F) (n + 2)) :
        X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) (mappingCone φ)) n ⟶
          X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F) (n + 2))
      (d (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) (mappingCone φ)) n (n + 1) ≫
          CategoryStruct.comp (Y :=
            X
              (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
                (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
              (n + 1))
            (Iso.hom (mapHomologicalComplexXIso φ H (n + 1)) :
              X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) (mappingCone φ)) (n + 1) ⟶
                X
                  (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
                    (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
                  (n + 1))
            (Cochain.v
                (↑(fst (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) :
                  Cochain (mappingCone ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ))
                    ((H.mapHomologicalComplex (ComplexShape.up ℤ)).obj F) 1)
                (n + 1) (n + 2) ⋯ :
              X
                  (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
                    (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
                  (n + 1) ⟶
                X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F) (n + 2)) :
        X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) (mappingCone φ)) n ⟶
          X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F) (n + 2)) ∧
    Eq (α :=
      X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) (mappingCone φ)) n ⟶
        X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) G) (n + 1))
      (Iso.hom (mapHomologicalComplexXIso φ H n) ≫
          HAdd.hAdd (α :=
            X
                (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
                  (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
                n ⟶
              X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) G) (n + 1))
            (Cochain.v
                (↑(fst (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) :
                  Cochain (mappingCone ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ))
                    ((H.mapHomologicalComplex (ComplexShape.up ℤ)).obj F) 1)
                n (n + 1) ⋯ ≫
              Hom.f (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ) (n + 1))
            (Cochain.v (snd (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) n n ⋯ ≫
              d (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) G) n (n + 1)) :
        X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) (mappingCone φ)) n ⟶
          X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) G) (n + 1))
      (d (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) (mappingCone φ)) n (n + 1) ≫
          CategoryStruct.comp (Y :=
            X
              (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
                (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
              (n + 1))
            (Iso.hom (mapHomologicalComplexXIso φ H (n + 1)) :
              X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) (mappingCone φ)) (n + 1) ⟶
                X
                  (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
                    (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
                  (n + 1))
            (Cochain.v (snd (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ)) (n + 1)
                (n + 1) ⋯ :
              X
                  (mappingCone (F := Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) F)
                    (CategoryTheory.Functor.map (H.mapHomologicalComplex (ComplexShape.up ℤ)) φ))
                  (n + 1) ⟶
                X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) G) (n + 1)) :
        X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) (mappingCone φ)) n ⟶
          X (Functor.obj (H.mapHomologicalComplex (ComplexShape.up ℤ)) G) (n + 1))

Tactic:
simp only [mapHomologicalComplexXIso_eq φ H n (n + 1) rfl,
      mapHomologicalComplexXIso_eq φ H (n + 1) (n + 2) (by lia),
      mapHomologicalComplexXIso'_hom, mapHomologicalComplexXIso'_hom]

Premises used: CochainComplex.mappingCone.mapHomologicalComplexXIso_eq, HAdd.hAdd, CochainComplex.mappingCone.mapHomologicalComplexXIso'_hom, OfNat.ofNat, rfl