theorem toSingle₀CokernelAtZeroIso_hom_eq [hf : QuasiIso' f] :
    f.toSingle₀CokernelAtZeroIso.hom =
      cokernel.desc (X.d 1 0) (f.f 0) (by rw [← f.2 1 0 rfl]; exact comp_zero) := by
  ext
  dsimp only [toSingle₀CokernelAtZeroIso, ChainComplex.homology'ZeroIso, homology'OfZeroRight,
    homology'.mapIso, ChainComplex.homology'Functor0Single₀, cokernel.map]
  

Proof state:
case h
ι : Type u_1
V : Type u
inst✝⁸ : Category.{v, u} V
inst✝⁷ : HasZeroMorphisms V
inst✝⁶ : HasZeroObject V
inst✝⁵ : HasEqualizers V
inst✝⁴ : HasImages V
inst✝³ : HasImageMaps V
inst✝² : HasCokernels V
c : ComplexShape ι
C D E : HomologicalComplex V c
W : Type u_2
inst✝¹ : Category.{u_3, u_2} W
inst✝ : Abelian W
X : ChainComplex W ℕ
Y : W
f : X ⟶ (ChainComplex.single₀ W).obj Y
hf✝ hf : QuasiIso' f
⊢ coequalizer.π (d X 1 0) 0 ≫
      ((Iso.mk
                (homology'.map (_ : dTo X 0 ≫ dFrom X 0 = 0) (_ : d X 1 0 ≫ 0 = 0)
                  (Arrow.isoMk (xPrevIso X ChainComplex.homology'ZeroIso.proof_10)
                      (Iso.refl (Arrow.mk (dTo X 0)).right)).hom
                  (Arrow.isoMk (Iso.refl (Arrow.mk (dFrom X 0)).left) (Iso.refl (Arrow.mk (dFrom X 0)).right)).hom
                  (_ :
                    (Arrow.isoMk (xPrevIso X (_ : 0 + 1 = 0 + 1)) (Iso.refl (Arrow.mk (dTo X 0)).right)).hom.right =
                      (Arrow.isoMk (xPrevIso X (_ : 0 + 1 = 0 + 1)) (Iso.refl (Arrow.mk (dTo X 0)).right)).hom.right))
                (homology'.map (_ : d X 1 0 ≫ 0 = 0) (_ : dTo X 0 ≫ dFrom X 0 = 0)
                  (Arrow.isoMk (xPrevIso X ChainComplex.homology'ZeroIso.proof_10)
                      (Iso.refl (Arrow.mk (dTo X 0)).right)).inv
                  (Arrow.isoMk (Iso.refl (Arrow.mk (dFrom X 0)).left) (Iso.refl (Arrow.mk (dFrom X 0)).right)).inv
                  (_ :
                    (Arrow.isoMk (xPrevIso X ChainComplex.homology'ZeroIso.proof_10)
                            (Iso.refl (Arrow.mk (dTo X 0)).right)).inv.right =
                      (Arrow.isoMk (Iso.refl (Arrow.mk (dFrom X 0)).left)
                            (Iso.refl (Arrow.mk (dFrom X 0)).right)).inv.left)) ≪≫
              cokernel.mapIso (imageToKernel (d X 1 0) 0 (_ : d X 1 0 ≫ 0 = 0)) (image.ι (d X 1 0))
                  (imageSubobjectIso (d X 1 0)) (kernelSubobjectIso 0 ≪≫ kernelZeroIsoSource)
                  (_ :
                    imageToKernel (d X 1 0) 0 (_ : d X 1 0 ≫ 0 = 0) ≫ (kernelSubobjectIso 0).hom ≫ kernel.ι 0 =
                      (imageSubobjectIso (d X 1 0)).hom ≫ image.ι (d X 1 0)) ≪≫
                cokernelImageι (d X 1 0)).symm ≪≫
          asIso ((homology'Functor W (ComplexShape.down ℕ) 0).map f) ≪≫
            (NatIso.ofComponents fun X =>
                  homology'.congr
                      (_ : dTo ((ChainComplex.single₀ W).obj X) 0 ≫ dFrom ((ChainComplex.single₀ W).obj X) 0 = 0)
                      (_ : 0 ≫ 0 = 0) (_ : 0 = 0)
                      (_ : d ((ChainComplex.single₀ W).obj X) 0 (ComplexShape.next (ComplexShape.down ℕ) 0) = 0) ≪≫
                    homology'ZeroZero).app
              Y).hom =
    coequalizer.π (d X 1 0) 0 ≫
      cokernel.desc (d X 1 0) (HomologicalComplex.Hom.f f 0) (_ : d X 1 0 ≫ HomologicalComplex.Hom.f f 0 = 0)

Next tactic:
dsimp [asIso]