/-- If `F` is an exact additive functor, then `F` commutes with `Hᵢ` (up to natural isomorphism). -/
noncomputable def homology'FunctorIso (i : ι) :
    homology'Functor A c i ⋙ F ≅ F.mapHomologicalComplex c ⋙ homology'Functor B c i :=
  NatIso.ofComponents (fun X => homology'Iso F X i) (by
      intro X Y f
      dsimp
      rw [← Iso.inv_comp_eq, ← Category.assoc, ← Iso.eq_comp_inv]
      refine' coequalizer.hom_ext _
      dsimp [homology'Iso]
      simp only [PreservesCokernel.iso_inv]
      dsimp [homology'.map]
      simp only [← Category.assoc, cokernel.π_desc]
      

Proof state:
A : Type u
inst✝⁶ : Category.{v, u} A
inst✝⁵ : Abelian A
X✝ Y✝ Z : A
f✝ : X✝ ⟶ Y✝
g : Y✝ ⟶ Z
w : f✝ ≫ g = 0
ι : Type u_1
c : ComplexShape ι
B : Type u_2
inst✝⁴ : Category.{?u.309013, u_2} B
inst✝³ : Abelian B
F : A ⥤ B
inst✝² : Additive F
inst✝¹ : PreservesFiniteLimits F
inst✝ : PreservesFiniteColimits F
i : ι
X Y : HomologicalComplex A c
f : X ⟶ Y
⊢ (((((kernelSubobjectIso (F.map (HomologicalComplex.dFrom X i))).hom ≫
              (PreservesKernel.iso F (HomologicalComplex.dFrom X i)).inv) ≫
            F.map (kernelSubobjectIso (HomologicalComplex.dFrom X i)).inv) ≫
          cokernel.π
            (F.map
              (imageToKernel (HomologicalComplex.dTo X i) (HomologicalComplex.dFrom X i)
                (_ : HomologicalComplex.dTo X i ≫ HomologicalComplex.dFrom X i = 0)))) ≫
        cokernelComparison
          (imageToKernel (HomologicalComplex.dTo X i) (HomologicalComplex.dFrom X i)
            (_ : HomologicalComplex.dTo X i ≫ HomologicalComplex.dFrom X i = 0))
          F) ≫
      F.map
        (cokernel.desc
          (imageToKernel (HomologicalComplex.dTo X i) (HomologicalComplex.dFrom X i)
            (_ : HomologicalComplex.dTo X i ≫ HomologicalComplex.dFrom X i = 0))
          (kernelSubobjectMap (HomologicalComplex.Hom.sqFrom f i) ≫
            cokernel.π
              (imageToKernel (HomologicalComplex.dTo Y i) (HomologicalComplex.dFrom Y i)
                (_ : HomologicalComplex.dTo Y i ≫ HomologicalComplex.dFrom Y i = 0)))
          (_ :
            imageToKernel (HomologicalComplex.dTo X i) (HomologicalComplex.dFrom X i)
                  (_ : HomologicalComplex.dTo X i ≫ HomologicalComplex.dFrom X i = 0) ≫
                kernelSubobjectMap (HomologicalComplex.Hom.sqFrom f i) ≫
                  cokernel.π
                    (imageToKernel (HomologicalComplex.dTo Y i) (HomologicalComplex.dFrom Y i)
                      (_ : HomologicalComplex.dTo Y i ≫ HomologicalComplex.dFrom Y i = 0)) =
              0)) =
    ((kernelSubobjectMap (HomologicalComplex.Hom.sqFrom ((mapHomologicalComplex F c).map f) i) ≫
          cokernel.π
            (imageToKernel (F.map (HomologicalComplex.d Y (ComplexShape.prev c i) i))
              (F.map (HomologicalComplex.d Y i (ComplexShape.next c i)))
              (_ :
                HomologicalComplex.dTo ((mapHomologicalComplex F c).obj Y) i ≫
                    HomologicalComplex.dFrom ((mapHomologicalComplex F c).obj Y) i =
                  0))) ≫
        cokernel.map
          (imageToKernel (F.map (HomologicalComplex.d Y (ComplexShape.prev c i) i))
            (F.map (HomologicalComplex.d Y i (ComplexShape.next c i)))
            (_ :
              HomologicalComplex.dTo ((mapHomologicalComplex F c).obj Y) i ≫
                  HomologicalComplex.dFrom ((mapHomologicalComplex F c).obj Y) i =
                0))
          (F.map
            (imageToKernel (HomologicalComplex.dTo Y i) (HomologicalComplex.dFrom Y i)
              (_ : HomologicalComplex.dTo Y i ≫ HomologicalComplex.dFrom Y i = 0)))
          (((imageSubobjectIso (F.map (HomologicalComplex.dTo Y i))).hom ≫
              image.lift
                (MonoFactorisation.mk (F.obj (image (HomologicalComplex.dTo Y i)))
                  (F.map (image.ι (HomologicalComplex.dTo Y i)))
                  (F.map (factorThruImage (HomologicalComplex.dTo Y i))))) ≫
            F.map (imageSubobjectIso (HomologicalComplex.dTo Y i)).inv)
          (((kernelSubobjectIso (F.map (HomologicalComplex.dFrom Y i))).hom ≫
              (PreservesKernel.iso F (HomologicalComplex.dFrom Y i)).inv) ≫
            F.map (kernelSubobjectIso (HomologicalComplex.dFrom Y i)).inv)
          (_ :
            imageToKernel (F.map (HomologicalComplex.d Y (ComplexShape.prev c i) i))
                  (F.map (HomologicalComplex.d Y i (ComplexShape.next c i)))
                  (_ :
                    HomologicalComplex.dTo ((mapHomologicalComplex F c).obj Y) i ≫
                        HomologicalComplex.dFrom ((mapHomologicalComplex F c).obj Y) i =
                      0) ≫
                (F.mapIso (kernelSubobjectIso (HomologicalComplex.dFrom Y i)) ≪≫
                    PreservesKernel.iso F (HomologicalComplex.dFrom Y i) ≪≫
                      (kernelSubobjectIso (F.map (HomologicalComplex.dFrom Y i))).symm).inv =
              (F.mapIso (imageSubobjectIso (HomologicalComplex.dTo Y i)) ≪≫
                    (PreservesImage.iso F (HomologicalComplex.dTo Y i)).symm ≪≫
                      (imageSubobjectIso (F.map (HomologicalComplex.dTo Y i))).symm).inv ≫
                F.map
                  (imageToKernel (HomologicalComplex.dTo Y i) (HomologicalComplex.dFrom Y i)
                    (_ : HomologicalComplex.dTo Y i ≫ HomologicalComplex.dFrom Y i = 0)))) ≫
      cokernelComparison
        (imageToKernel (HomologicalComplex.dTo Y i) (HomologicalComplex.dFrom Y i)
          (_ : HomologicalComplex.dTo Y i ≫ HomologicalComplex.dFrom Y i = 0))
        F

Next tactic:
simp only [Category.assoc, cokernelComparison_map_desc, cokernel.π_desc]