algebra.homology.image_to_kernelMathlib.Algebra.Homology.ImageToKernel

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -185,91 +185,91 @@ section
 
 variable {A B C : V} (f : A ⟶ B) [HasImage f] (g : B ⟶ C) [HasKernel g]
 
-#print homology /-
+#print homology' /-
 /-- The homology of a pair of morphisms `f : A ⟶ B` and `g : B ⟶ C` satisfying `f ≫ g = 0`
 is the cokernel of the `image_to_kernel` morphism for `f` and `g`.
 -/
-def homology {A B C : V} (f : A ⟶ B) [HasImage f] (g : B ⟶ C) [HasKernel g] (w : f ≫ g = 0)
+def homology' {A B C : V} (f : A ⟶ B) [HasImage f] (g : B ⟶ C) [HasKernel g] (w : f ≫ g = 0)
     [HasCokernel (imageToKernel f g w)] : V :=
   cokernel (imageToKernel f g w)
-#align homology homology
+#align homology homology'
 -/
 
 section
 
 variable (w : f ≫ g = 0) [HasCokernel (imageToKernel f g w)]
 
-#print homology.π /-
+#print homology'.π /-
 /-- The morphism from cycles to homology. -/
-def homology.π : (kernelSubobject g : V) ⟶ homology f g w :=
+def homology'.π : (kernelSubobject g : V) ⟶ homology' f g w :=
   cokernel.π _
-#align homology.π homology.π
+#align homology.π homology'.π
 -/
 
-#print homology.condition /-
+#print homology'.condition /-
 @[simp]
-theorem homology.condition : imageToKernel f g w ≫ homology.π f g w = 0 :=
+theorem homology'.condition : imageToKernel f g w ≫ homology'.π f g w = 0 :=
   cokernel.condition _
-#align homology.condition homology.condition
+#align homology.condition homology'.condition
 -/
 
-#print homology.desc /-
+#print homology'.desc /-
 /-- To construct a map out of homology, it suffices to construct a map out of the cycles
 which vanishes on boundaries.
 -/
-def homology.desc {D : V} (k : (kernelSubobject g : V) ⟶ D) (p : imageToKernel f g w ≫ k = 0) :
-    homology f g w ⟶ D :=
+def homology'.desc {D : V} (k : (kernelSubobject g : V) ⟶ D) (p : imageToKernel f g w ≫ k = 0) :
+    homology' f g w ⟶ D :=
   cokernel.desc _ k p
-#align homology.desc homology.desc
+#align homology.desc homology'.desc
 -/
 
-#print homology.π_desc /-
+#print homology'.π_desc /-
 @[simp, reassoc, elementwise]
-theorem homology.π_desc {D : V} (k : (kernelSubobject g : V) ⟶ D)
-    (p : imageToKernel f g w ≫ k = 0) : homology.π f g w ≫ homology.desc f g w k p = k := by
-  simp [homology.π, homology.desc]
-#align homology.π_desc homology.π_desc
+theorem homology'.π_desc {D : V} (k : (kernelSubobject g : V) ⟶ D)
+    (p : imageToKernel f g w ≫ k = 0) : homology'.π f g w ≫ homology'.desc f g w k p = k := by
+  simp [homology'.π, homology'.desc]
+#align homology.π_desc homology'.π_desc
 -/
 
-#print homology.ext /-
+#print homology'.ext /-
 /-- To check two morphisms out of `homology f g w` are equal, it suffices to check on cycles. -/
 @[ext]
-theorem homology.ext {D : V} {k k' : homology f g w ⟶ D}
-    (p : homology.π f g w ≫ k = homology.π f g w ≫ k') : k = k' := by ext; exact p
-#align homology.ext homology.ext
+theorem homology'.ext {D : V} {k k' : homology' f g w ⟶ D}
+    (p : homology'.π f g w ≫ k = homology'.π f g w ≫ k') : k = k' := by ext; exact p
+#align homology.ext homology'.ext
 -/
 
-#print homologyOfZeroRight /-
+#print homology'OfZeroRight /-
 /-- The cokernel of the map `Im f ⟶ Ker 0` is isomorphic to the cokernel of `f.` -/
-def homologyOfZeroRight [HasCokernel (imageToKernel f (0 : B ⟶ C) comp_zero)] [HasCokernel f]
+def homology'OfZeroRight [HasCokernel (imageToKernel f (0 : B ⟶ C) comp_zero)] [HasCokernel f]
     [HasCokernel (image.ι f)] [Epi (factorThruImage f)] :
-    homology f (0 : B ⟶ C) comp_zero ≅ cokernel f :=
+    homology' f (0 : B ⟶ C) comp_zero ≅ cokernel f :=
   (cokernel.mapIso _ _ (imageSubobjectIso _) ((kernelSubobjectIso 0).trans kernelZeroIsoSource)
         (by simp)).trans
     (cokernelImageι _)
-#align homology_of_zero_right homologyOfZeroRight
+#align homology_of_zero_right homology'OfZeroRight
 -/
 
-#print homologyOfZeroLeft /-
+#print homology'OfZeroLeft /-
 /-- The kernel of the map `Im 0 ⟶ Ker f` is isomorphic to the kernel of `f.` -/
-def homologyOfZeroLeft [HasZeroObject V] [HasKernels V] [HasImage (0 : A ⟶ B)]
+def homology'OfZeroLeft [HasZeroObject V] [HasKernels V] [HasImage (0 : A ⟶ B)]
     [HasCokernel (imageToKernel (0 : A ⟶ B) g zero_comp)] :
-    homology (0 : A ⟶ B) g zero_comp ≅ kernel g :=
+    homology' (0 : A ⟶ B) g zero_comp ≅ kernel g :=
   ((cokernelIsoOfEq <| imageToKernel_zero_left _).trans cokernelZeroIsoTarget).trans
     (kernelSubobjectIso _)
-#align homology_of_zero_left homologyOfZeroLeft
+#align homology_of_zero_left homology'OfZeroLeft
 -/
 
-#print homologyZeroZero /-
+#print homology'ZeroZero /-
 /-- `homology 0 0 _` is just the middle object. -/
 @[simps]
-def homologyZeroZero [HasZeroObject V] [HasImage (0 : A ⟶ B)]
+def homology'ZeroZero [HasZeroObject V] [HasImage (0 : A ⟶ B)]
     [HasCokernel (imageToKernel (0 : A ⟶ B) (0 : B ⟶ C) (by simp))] :
-    homology (0 : A ⟶ B) (0 : B ⟶ C) (by simp) ≅ B
+    homology' (0 : A ⟶ B) (0 : B ⟶ C) (by simp) ≅ B
     where
-  Hom := homology.desc (0 : A ⟶ B) (0 : B ⟶ C) (by simp) (kernelSubobject 0).arrow (by simp)
-  inv := inv (kernelSubobject 0).arrow ≫ homology.π _ _ _
-#align homology_zero_zero homologyZeroZero
+  Hom := homology'.desc (0 : A ⟶ B) (0 : B ⟶ C) (by simp) (kernelSubobject 0).arrow (by simp)
+  inv := inv (kernelSubobject 0).arrow ≫ homology'.π _ _ _
+#align homology_zero_zero homology'ZeroZero
 -/
 
 end
@@ -305,82 +305,82 @@ variable [HasCokernel (imageToKernel f₂ g₂ w₂)]
 
 variable [HasCokernel (imageToKernel f₃ g₃ w₃)]
 
-#print homology.map /-
+#print homology'.map /-
 /-- Given compatible commutative squares between
 a pair `f g` and a pair `f' g'` satisfying `f ≫ g = 0` and `f' ≫ g' = 0`,
 we get a morphism on homology.
 -/
-def homology.map (p : α.right = β.left) : homology f g w ⟶ homology f' g' w' :=
+def homology'.map (p : α.right = β.left) : homology' f g w ⟶ homology' f' g' w' :=
   cokernel.desc _ (kernelSubobjectMap β ≫ cokernel.π _)
     (by
       rw [imageSubobjectMap_comp_imageToKernel_assoc w w' α β p]
       simp only [cokernel.condition, comp_zero])
-#align homology.map homology.map
+#align homology.map homology'.map
 -/
 
-#print homology.π_map /-
+#print homology'.π_map /-
 @[simp, reassoc, elementwise]
-theorem homology.π_map (p : α.right = β.left) :
-    homology.π f g w ≫ homology.map w w' α β p = kernelSubobjectMap β ≫ homology.π f' g' w' := by
-  simp only [homology.π, homology.map, cokernel.π_desc]
-#align homology.π_map homology.π_map
+theorem homology'.π_map (p : α.right = β.left) :
+    homology'.π f g w ≫ homology'.map w w' α β p = kernelSubobjectMap β ≫ homology'.π f' g' w' := by
+  simp only [homology'.π, homology'.map, cokernel.π_desc]
+#align homology.π_map homology'.π_map
 -/
 
-#print homology.map_desc /-
+#print homology'.map_desc /-
 @[simp, reassoc, elementwise]
-theorem homology.map_desc (p : α.right = β.left) {D : V} (k : (kernelSubobject g' : V) ⟶ D)
+theorem homology'.map_desc (p : α.right = β.left) {D : V} (k : (kernelSubobject g' : V) ⟶ D)
     (z : imageToKernel f' g' w' ≫ k = 0) :
-    homology.map w w' α β p ≫ homology.desc f' g' w' k z =
-      homology.desc f g w (kernelSubobjectMap β ≫ k)
+    homology'.map w w' α β p ≫ homology'.desc f' g' w' k z =
+      homology'.desc f g w (kernelSubobjectMap β ≫ k)
         (by simp only [imageSubobjectMap_comp_imageToKernel_assoc w w' α β p, z, comp_zero]) :=
-  by ext <;> simp only [homology.π_desc, homology.π_map_assoc]
-#align homology.map_desc homology.map_desc
+  by ext <;> simp only [homology'.π_desc, homology'.π_map_assoc]
+#align homology.map_desc homology'.map_desc
 -/
 
-#print homology.map_id /-
+#print homology'.map_id /-
 @[simp]
-theorem homology.map_id : homology.map w w (𝟙 _) (𝟙 _) rfl = 𝟙 _ := by
-  ext <;> simp only [homology.π_map, kernel_subobject_map_id, category.id_comp, category.comp_id]
-#align homology.map_id homology.map_id
+theorem homology'.map_id : homology'.map w w (𝟙 _) (𝟙 _) rfl = 𝟙 _ := by
+  ext <;> simp only [homology'.π_map, kernel_subobject_map_id, category.id_comp, category.comp_id]
+#align homology.map_id homology'.map_id
 -/
 
-#print homology.comp_right_eq_comp_left /-
+#print homology'.comp_right_eq_comp_left /-
 /-- Auxiliary lemma for homology computations. -/
-theorem homology.comp_right_eq_comp_left {V : Type _} [Category V] {A₁ B₁ C₁ A₂ B₂ C₂ A₃ B₃ C₃ : V}
+theorem homology'.comp_right_eq_comp_left {V : Type _} [Category V] {A₁ B₁ C₁ A₂ B₂ C₂ A₃ B₃ C₃ : V}
     {f₁ : A₁ ⟶ B₁} {g₁ : B₁ ⟶ C₁} {f₂ : A₂ ⟶ B₂} {g₂ : B₂ ⟶ C₂} {f₃ : A₃ ⟶ B₃} {g₃ : B₃ ⟶ C₃}
     {α₁ : Arrow.mk f₁ ⟶ Arrow.mk f₂} {β₁ : Arrow.mk g₁ ⟶ Arrow.mk g₂}
     {α₂ : Arrow.mk f₂ ⟶ Arrow.mk f₃} {β₂ : Arrow.mk g₂ ⟶ Arrow.mk g₃} (p₁ : α₁.right = β₁.left)
     (p₂ : α₂.right = β₂.left) : (α₁ ≫ α₂).right = (β₁ ≫ β₂).left := by
   simp only [comma.comp_left, comma.comp_right, p₁, p₂]
-#align homology.comp_right_eq_comp_left homology.comp_right_eq_comp_left
+#align homology.comp_right_eq_comp_left homology'.comp_right_eq_comp_left
 -/
 
-#print homology.map_comp /-
+#print homology'.map_comp /-
 @[reassoc]
-theorem homology.map_comp (p₁ : α₁.right = β₁.left) (p₂ : α₂.right = β₂.left) :
-    homology.map w₁ w₂ α₁ β₁ p₁ ≫ homology.map w₂ w₃ α₂ β₂ p₂ =
-      homology.map w₁ w₃ (α₁ ≫ α₂) (β₁ ≫ β₂) (homology.comp_right_eq_comp_left p₁ p₂) :=
+theorem homology'.map_comp (p₁ : α₁.right = β₁.left) (p₂ : α₂.right = β₂.left) :
+    homology'.map w₁ w₂ α₁ β₁ p₁ ≫ homology'.map w₂ w₃ α₂ β₂ p₂ =
+      homology'.map w₁ w₃ (α₁ ≫ α₂) (β₁ ≫ β₂) (homology'.comp_right_eq_comp_left p₁ p₂) :=
   by
   ext <;>
-    simp only [kernel_subobject_map_comp, homology.π_map_assoc, homology.π_map, category.assoc]
-#align homology.map_comp homology.map_comp
+    simp only [kernel_subobject_map_comp, homology'.π_map_assoc, homology'.π_map, category.assoc]
+#align homology.map_comp homology'.map_comp
 -/
 
-#print homology.mapIso /-
+#print homology'.mapIso /-
 /-- An isomorphism between two three-term complexes induces an isomorphism on homology. -/
-def homology.mapIso (α : Arrow.mk f₁ ≅ Arrow.mk f₂) (β : Arrow.mk g₁ ≅ Arrow.mk g₂)
-    (p : α.Hom.right = β.Hom.left) : homology f₁ g₁ w₁ ≅ homology f₂ g₂ w₂
+def homology'.mapIso (α : Arrow.mk f₁ ≅ Arrow.mk f₂) (β : Arrow.mk g₁ ≅ Arrow.mk g₂)
+    (p : α.Hom.right = β.Hom.left) : homology' f₁ g₁ w₁ ≅ homology' f₂ g₂ w₂
     where
-  Hom := homology.map w₁ w₂ α.Hom β.Hom p
+  Hom := homology'.map w₁ w₂ α.Hom β.Hom p
   inv :=
-    homology.map w₂ w₁ α.inv β.inv
+    homology'.map w₂ w₁ α.inv β.inv
       (by
         rw [← cancel_mono α.hom.right, ← comma.comp_right, α.inv_hom_id, comma.id_right, p, ←
           comma.comp_left, β.inv_hom_id, comma.id_left]
         rfl)
-  hom_inv_id' := by rw [homology.map_comp]; convert homology.map_id _ <;> rw [iso.hom_inv_id]
-  inv_hom_id' := by rw [homology.map_comp]; convert homology.map_id _ <;> rw [iso.inv_hom_id]
-#align homology.map_iso homology.mapIso
+  hom_inv_id' := by rw [homology'.map_comp]; convert homology'.map_id _ <;> rw [iso.hom_inv_id]
+  inv_hom_id' := by rw [homology'.map_comp]; convert homology'.map_id _ <;> rw [iso.inv_hom_id]
+#align homology.map_iso homology'.mapIso
 -/
 
 end
@@ -401,15 +401,15 @@ private unsafe def aux_tac : tactic Unit :=
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1444910979.aux_tac -/
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1444910979.aux_tac -/
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1444910979.aux_tac -/
-#print homology.congr /-
+#print homology'.congr /-
 /-- `homology f g w ≅ homology f' g' w'` if `f = f'` and `g = g'`.
 (Note the objects are not changing here.)
 -/
 @[simps]
-def homology.congr (pf : f = f') (pg : g = g') : homology f g w ≅ homology f' g' w'
+def homology'.congr (pf : f = f') (pg : g = g') : homology' f g w ≅ homology' f' g' w'
     where
   Hom :=
-    homology.map w w'
+    homology'.map w w'
       ⟨𝟙 _, 𝟙 _, by
         run_tac
           aux_tac⟩
@@ -418,7 +418,7 @@ def homology.congr (pf : f = f') (pg : g = g') : homology f g w ≅ homology f'
           aux_tac⟩
       rfl
   inv :=
-    homology.map w' w
+    homology'.map w' w
       ⟨𝟙 _, 𝟙 _, by
         run_tac
           aux_tac⟩
@@ -427,12 +427,12 @@ def homology.congr (pf : f = f') (pg : g = g') : homology f g w ≅ homology f'
           aux_tac⟩
       rfl
   hom_inv_id' := by
-    cases pf; cases pg; rw [homology.map_comp, ← homology.map_id]
+    cases pf; cases pg; rw [homology'.map_comp, ← homology'.map_id]
     congr 1 <;> exact category.comp_id _
   inv_hom_id' := by
-    cases pf; cases pg; rw [homology.map_comp, ← homology.map_id]
+    cases pf; cases pg; rw [homology'.map_comp, ← homology'.map_id]
     congr 1 <;> exact category.comp_id _
-#align homology.congr homology.congr
+#align homology.congr homology'.congr
 -/
 
 end
@@ -480,11 +480,11 @@ theorem imageToKernel'_kernelSubobjectIso (w : f ≫ g = 0) :
 
 variable [HasCokernels V]
 
-#print homologyIsoCokernelImageToKernel' /-
+#print homology'IsoCokernelImageToKernel' /-
 /-- `homology f g w` can be computed as the cokernel of `image_to_kernel' f g w`.
 -/
-def homologyIsoCokernelImageToKernel' (w : f ≫ g = 0) :
-    homology f g w ≅ cokernel (imageToKernel' f g w)
+def homology'IsoCokernelImageToKernel' (w : f ≫ g = 0) :
+    homology' f g w ≅ cokernel (imageToKernel' f g w)
     where
   Hom :=
     cokernel.map _ _ (imageSubobjectIso f).Hom (kernelSubobjectIso g).Hom
@@ -500,21 +500,21 @@ def homologyIsoCokernelImageToKernel' (w : f ≫ g = 0) :
   inv_hom_id' := by ext1;
     simp only [iso.inv_hom_id_assoc, cokernel.π_desc, category.comp_id, cokernel.π_desc_assoc,
       category.assoc]
-#align homology_iso_cokernel_image_to_kernel' homologyIsoCokernelImageToKernel'
+#align homology_iso_cokernel_image_to_kernel' homology'IsoCokernelImageToKernel'
 -/
 
 variable [HasEqualizers V]
 
-#print homologyIsoCokernelLift /-
+#print homology'IsoCokernelLift /-
 /-- `homology f g w` can be computed as the cokernel of `kernel.lift g f w`.
 -/
-def homologyIsoCokernelLift (w : f ≫ g = 0) : homology f g w ≅ cokernel (kernel.lift g f w) :=
+def homology'IsoCokernelLift (w : f ≫ g = 0) : homology' f g w ≅ cokernel (kernel.lift g f w) :=
   by
-  refine' homologyIsoCokernelImageToKernel' f g w ≪≫ _
+  refine' homology'IsoCokernelImageToKernel' f g w ≪≫ _
   have p : factor_thru_image f ≫ imageToKernel' f g w = kernel.lift g f w := by ext;
     simp [imageToKernel']
   exact (cokernel_epi_comp _ _).symm ≪≫ cokernel_iso_of_eq p
-#align homology_iso_cokernel_lift homologyIsoCokernelLift
+#align homology_iso_cokernel_lift homology'IsoCokernelLift
 -/
 
 end imageToKernel'
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2021 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 -/
-import Mathbin.CategoryTheory.Subobject.Limits
+import CategoryTheory.Subobject.Limits
 
 #align_import algebra.homology.image_to_kernel from "leanprover-community/mathlib"@"ce38d86c0b2d427ce208c3cee3159cb421d2b3c4"
 
@@ -392,7 +392,7 @@ section
 variable {A B C : V} {f : A ⟶ B} {g : B ⟶ C} (w : f ≫ g = 0) {f' : A ⟶ B} {g' : B ⟶ C}
   (w' : f' ≫ g' = 0) [HasKernels V] [HasCokernels V] [HasImages V] [HasImageMaps V]
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:336:4: warning: unsupported (TODO): `[tacs] -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:337:4: warning: unsupported (TODO): `[tacs] -/
 /-- Custom tactic to golf and speedup boring proofs in `homology.congr`. -/
 private unsafe def aux_tac : tactic Unit :=
   sorry
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2021 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module algebra.homology.image_to_kernel
-! leanprover-community/mathlib commit ce38d86c0b2d427ce208c3cee3159cb421d2b3c4
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.CategoryTheory.Subobject.Limits
 
+#align_import algebra.homology.image_to_kernel from "leanprover-community/mathlib"@"ce38d86c0b2d427ce208c3cee3159cb421d2b3c4"
+
 /-!
 # Image-to-kernel comparison maps
 
Diff
@@ -48,32 +48,40 @@ theorem image_le_kernel (w : f ≫ g = 0) : imageSubobject f ≤ kernelSubobject
 #align image_le_kernel image_le_kernel
 -/
 
+#print imageToKernel /-
 /-- The canonical morphism `image_subobject f ⟶ kernel_subobject g` when `f ≫ g = 0`.
 -/
 def imageToKernel (w : f ≫ g = 0) : (imageSubobject f : V) ⟶ (kernelSubobject g : V) :=
   Subobject.ofLE _ _ (image_le_kernel _ _ w)
 deriving Mono
 #align image_to_kernel imageToKernel
+-/
 
+#print subobject_ofLE_as_imageToKernel /-
 /-- Prefer `image_to_kernel`. -/
 @[simp]
 theorem subobject_ofLE_as_imageToKernel (w : f ≫ g = 0) (h) :
     Subobject.ofLE (imageSubobject f) (kernelSubobject g) h = imageToKernel f g w :=
   rfl
 #align subobject_of_le_as_image_to_kernel subobject_ofLE_as_imageToKernel
+-/
 
+#print imageToKernel_arrow /-
 @[simp, reassoc, elementwise]
 theorem imageToKernel_arrow (w : f ≫ g = 0) :
     imageToKernel f g w ≫ (kernelSubobject g).arrow = (imageSubobject f).arrow := by
   simp [imageToKernel]
 #align image_to_kernel_arrow imageToKernel_arrow
+-/
 
+#print factorThruImageSubobject_comp_imageToKernel /-
 -- This is less useful as a `simp` lemma than it initially appears,
 -- as it "loses" the information the morphism factors through the image.
 theorem factorThruImageSubobject_comp_imageToKernel (w : f ≫ g = 0) :
     factorThruImageSubobject f ≫ imageToKernel f g w = factorThruKernelSubobject g f w := by ext;
   simp
 #align factor_thru_image_subobject_comp_image_to_kernel factorThruImageSubobject_comp_imageToKernel
+-/
 
 end
 
@@ -81,33 +89,42 @@ section
 
 variable {A B C : V} (f : A ⟶ B) (g : B ⟶ C)
 
+#print imageToKernel_zero_left /-
 @[simp]
 theorem imageToKernel_zero_left [HasKernels V] [HasZeroObject V] {w} :
     imageToKernel (0 : A ⟶ B) g w = 0 := by ext; simp
 #align image_to_kernel_zero_left imageToKernel_zero_left
+-/
 
+#print imageToKernel_zero_right /-
 theorem imageToKernel_zero_right [HasImages V] {w} :
     imageToKernel f (0 : B ⟶ C) w =
       (imageSubobject f).arrow ≫ inv (kernelSubobject (0 : B ⟶ C)).arrow :=
   by ext; simp
 #align image_to_kernel_zero_right imageToKernel_zero_right
+-/
 
 section
 
 variable [HasKernels V] [HasImages V]
 
+#print imageToKernel_comp_right /-
 theorem imageToKernel_comp_right {D : V} (h : C ⟶ D) (w : f ≫ g = 0) :
     imageToKernel f (g ≫ h) (by simp [reassoc_of w]) =
       imageToKernel f g w ≫ Subobject.ofLE _ _ (kernelSubobject_comp_le g h) :=
   by ext; simp
 #align image_to_kernel_comp_right imageToKernel_comp_right
+-/
 
+#print imageToKernel_comp_left /-
 theorem imageToKernel_comp_left {Z : V} (h : Z ⟶ A) (w : f ≫ g = 0) :
     imageToKernel (h ≫ f) g (by simp [w]) =
       Subobject.ofLE _ _ (imageSubobject_comp_le h f) ≫ imageToKernel f g w :=
   by ext; simp
 #align image_to_kernel_comp_left imageToKernel_comp_left
+-/
 
+#print imageToKernel_comp_mono /-
 @[simp]
 theorem imageToKernel_comp_mono {D : V} (h : C ⟶ D) [Mono h] (w) :
     imageToKernel f (g ≫ h) w =
@@ -115,7 +132,9 @@ theorem imageToKernel_comp_mono {D : V} (h : C ⟶ D) [Mono h] (w) :
         (Subobject.isoOfEq _ _ (kernelSubobject_comp_mono g h)).inv :=
   by ext; simp
 #align image_to_kernel_comp_mono imageToKernel_comp_mono
+-/
 
+#print imageToKernel_epi_comp /-
 @[simp]
 theorem imageToKernel_epi_comp {Z : V} (h : Z ⟶ A) [Epi h] (w) :
     imageToKernel (h ≫ f) g w =
@@ -123,9 +142,11 @@ theorem imageToKernel_epi_comp {Z : V} (h : Z ⟶ A) [Epi h] (w) :
         imageToKernel f g ((cancel_epi h).mp (by simpa using w : h ≫ f ≫ g = h ≫ 0)) :=
   by ext; simp
 #align image_to_kernel_epi_comp imageToKernel_epi_comp
+-/
 
 end
 
+#print imageToKernel_comp_hom_inv_comp /-
 @[simp]
 theorem imageToKernel_comp_hom_inv_comp [HasEqualizers V] [HasImages V] {Z : V} {i : B ≅ Z} (w) :
     imageToKernel (f ≫ i.Hom) (i.inv ≫ g) w =
@@ -133,9 +154,11 @@ theorem imageToKernel_comp_hom_inv_comp [HasEqualizers V] [HasImages V] {Z : V}
         imageToKernel f g (by simpa using w) ≫ (kernelSubobjectIsoComp i.inv g).inv :=
   by ext; simp
 #align image_to_kernel_comp_hom_inv_comp imageToKernel_comp_hom_inv_comp
+-/
 
 open scoped ZeroObject
 
+#print imageToKernel_epi_of_zero_of_mono /-
 /-- `image_to_kernel` for `A --0--> B --g--> C`, where `g` is a mono is itself an epi
 (i.e. the sequence is exact at `B`).
 -/
@@ -143,7 +166,9 @@ instance imageToKernel_epi_of_zero_of_mono [HasKernels V] [HasZeroObject V] [Mon
     Epi (imageToKernel (0 : A ⟶ B) g (by simp)) :=
   epi_of_target_iso_zero _ (kernelSubobjectIso g ≪≫ kernel.ofMono g)
 #align image_to_kernel_epi_of_zero_of_mono imageToKernel_epi_of_zero_of_mono
+-/
 
+#print imageToKernel_epi_of_epi_of_zero /-
 /-- `image_to_kernel` for `A --f--> B --0--> C`, where `g` is an epi is itself an epi
 (i.e. the sequence is exact at `B`).
 -/
@@ -155,6 +180,7 @@ instance imageToKernel_epi_of_epi_of_zero [HasImages V] [Epi f] :
   rw [← image_subobject_arrow]
   refine' @epi_comp _ _ _ _ _ _ (epi_comp _ _) _ _
 #align image_to_kernel_epi_of_epi_of_zero imageToKernel_epi_of_epi_of_zero
+-/
 
 end
 
@@ -162,6 +188,7 @@ section
 
 variable {A B C : V} (f : A ⟶ B) [HasImage f] (g : B ⟶ C) [HasKernel g]
 
+#print homology /-
 /-- The homology of a pair of morphisms `f : A ⟶ B` and `g : B ⟶ C` satisfying `f ≫ g = 0`
 is the cokernel of the `image_to_kernel` morphism for `f` and `g`.
 -/
@@ -169,21 +196,27 @@ def homology {A B C : V} (f : A ⟶ B) [HasImage f] (g : B ⟶ C) [HasKernel g]
     [HasCokernel (imageToKernel f g w)] : V :=
   cokernel (imageToKernel f g w)
 #align homology homology
+-/
 
 section
 
 variable (w : f ≫ g = 0) [HasCokernel (imageToKernel f g w)]
 
+#print homology.π /-
 /-- The morphism from cycles to homology. -/
 def homology.π : (kernelSubobject g : V) ⟶ homology f g w :=
   cokernel.π _
 #align homology.π homology.π
+-/
 
+#print homology.condition /-
 @[simp]
 theorem homology.condition : imageToKernel f g w ≫ homology.π f g w = 0 :=
   cokernel.condition _
 #align homology.condition homology.condition
+-/
 
+#print homology.desc /-
 /-- To construct a map out of homology, it suffices to construct a map out of the cycles
 which vanishes on boundaries.
 -/
@@ -191,19 +224,25 @@ def homology.desc {D : V} (k : (kernelSubobject g : V) ⟶ D) (p : imageToKernel
     homology f g w ⟶ D :=
   cokernel.desc _ k p
 #align homology.desc homology.desc
+-/
 
+#print homology.π_desc /-
 @[simp, reassoc, elementwise]
 theorem homology.π_desc {D : V} (k : (kernelSubobject g : V) ⟶ D)
     (p : imageToKernel f g w ≫ k = 0) : homology.π f g w ≫ homology.desc f g w k p = k := by
   simp [homology.π, homology.desc]
 #align homology.π_desc homology.π_desc
+-/
 
+#print homology.ext /-
 /-- To check two morphisms out of `homology f g w` are equal, it suffices to check on cycles. -/
 @[ext]
 theorem homology.ext {D : V} {k k' : homology f g w ⟶ D}
     (p : homology.π f g w ≫ k = homology.π f g w ≫ k') : k = k' := by ext; exact p
 #align homology.ext homology.ext
+-/
 
+#print homologyOfZeroRight /-
 /-- The cokernel of the map `Im f ⟶ Ker 0` is isomorphic to the cokernel of `f.` -/
 def homologyOfZeroRight [HasCokernel (imageToKernel f (0 : B ⟶ C) comp_zero)] [HasCokernel f]
     [HasCokernel (image.ι f)] [Epi (factorThruImage f)] :
@@ -212,7 +251,9 @@ def homologyOfZeroRight [HasCokernel (imageToKernel f (0 : B ⟶ C) comp_zero)]
         (by simp)).trans
     (cokernelImageι _)
 #align homology_of_zero_right homologyOfZeroRight
+-/
 
+#print homologyOfZeroLeft /-
 /-- The kernel of the map `Im 0 ⟶ Ker f` is isomorphic to the kernel of `f.` -/
 def homologyOfZeroLeft [HasZeroObject V] [HasKernels V] [HasImage (0 : A ⟶ B)]
     [HasCokernel (imageToKernel (0 : A ⟶ B) g zero_comp)] :
@@ -220,7 +261,9 @@ def homologyOfZeroLeft [HasZeroObject V] [HasKernels V] [HasImage (0 : A ⟶ B)]
   ((cokernelIsoOfEq <| imageToKernel_zero_left _).trans cokernelZeroIsoTarget).trans
     (kernelSubobjectIso _)
 #align homology_of_zero_left homologyOfZeroLeft
+-/
 
+#print homologyZeroZero /-
 /-- `homology 0 0 _` is just the middle object. -/
 @[simps]
 def homologyZeroZero [HasZeroObject V] [HasImage (0 : A ⟶ B)]
@@ -230,6 +273,7 @@ def homologyZeroZero [HasZeroObject V] [HasImage (0 : A ⟶ B)]
   Hom := homology.desc (0 : A ⟶ B) (0 : B ⟶ C) (by simp) (kernelSubobject 0).arrow (by simp)
   inv := inv (kernelSubobject 0).arrow ≫ homology.π _ _ _
 #align homology_zero_zero homologyZeroZero
+-/
 
 end
 
@@ -296,11 +340,14 @@ theorem homology.map_desc (p : α.right = β.left) {D : V} (k : (kernelSubobject
 #align homology.map_desc homology.map_desc
 -/
 
+#print homology.map_id /-
 @[simp]
 theorem homology.map_id : homology.map w w (𝟙 _) (𝟙 _) rfl = 𝟙 _ := by
   ext <;> simp only [homology.π_map, kernel_subobject_map_id, category.id_comp, category.comp_id]
 #align homology.map_id homology.map_id
+-/
 
+#print homology.comp_right_eq_comp_left /-
 /-- Auxiliary lemma for homology computations. -/
 theorem homology.comp_right_eq_comp_left {V : Type _} [Category V] {A₁ B₁ C₁ A₂ B₂ C₂ A₃ B₃ C₃ : V}
     {f₁ : A₁ ⟶ B₁} {g₁ : B₁ ⟶ C₁} {f₂ : A₂ ⟶ B₂} {g₂ : B₂ ⟶ C₂} {f₃ : A₃ ⟶ B₃} {g₃ : B₃ ⟶ C₃}
@@ -309,6 +356,7 @@ theorem homology.comp_right_eq_comp_left {V : Type _} [Category V] {A₁ B₁ C
     (p₂ : α₂.right = β₂.left) : (α₁ ≫ α₂).right = (β₁ ≫ β₂).left := by
   simp only [comma.comp_left, comma.comp_right, p₁, p₂]
 #align homology.comp_right_eq_comp_left homology.comp_right_eq_comp_left
+-/
 
 #print homology.map_comp /-
 @[reassoc]
@@ -321,6 +369,7 @@ theorem homology.map_comp (p₁ : α₁.right = β₁.left) (p₂ : α₂.right
 #align homology.map_comp homology.map_comp
 -/
 
+#print homology.mapIso /-
 /-- An isomorphism between two three-term complexes induces an isomorphism on homology. -/
 def homology.mapIso (α : Arrow.mk f₁ ≅ Arrow.mk f₂) (β : Arrow.mk g₁ ≅ Arrow.mk g₂)
     (p : α.Hom.right = β.Hom.left) : homology f₁ g₁ w₁ ≅ homology f₂ g₂ w₂
@@ -335,6 +384,7 @@ def homology.mapIso (α : Arrow.mk f₁ ≅ Arrow.mk f₂) (β : Arrow.mk g₁ 
   hom_inv_id' := by rw [homology.map_comp]; convert homology.map_id _ <;> rw [iso.hom_inv_id]
   inv_hom_id' := by rw [homology.map_comp]; convert homology.map_id _ <;> rw [iso.inv_hom_id]
 #align homology.map_iso homology.mapIso
+-/
 
 end
 
@@ -413,19 +463,23 @@ def imageToKernel' (w : f ≫ g = 0) : image f ⟶ kernel g :=
 #align image_to_kernel' imageToKernel'
 -/
 
+#print imageSubobjectIso_imageToKernel' /-
 @[simp]
 theorem imageSubobjectIso_imageToKernel' (w : f ≫ g = 0) :
     (imageSubobjectIso f).Hom ≫ imageToKernel' f g w =
       imageToKernel f g w ≫ (kernelSubobjectIso g).Hom :=
   by ext; simp [imageToKernel']
 #align image_subobject_iso_image_to_kernel' imageSubobjectIso_imageToKernel'
+-/
 
+#print imageToKernel'_kernelSubobjectIso /-
 @[simp]
 theorem imageToKernel'_kernelSubobjectIso (w : f ≫ g = 0) :
     imageToKernel' f g w ≫ (kernelSubobjectIso g).inv =
       (imageSubobjectIso f).inv ≫ imageToKernel f g w :=
   by ext; simp [imageToKernel']
 #align image_to_kernel'_kernel_subobject_iso imageToKernel'_kernelSubobjectIso
+-/
 
 variable [HasCokernels V]
 
Diff
@@ -345,7 +345,7 @@ section
 variable {A B C : V} {f : A ⟶ B} {g : B ⟶ C} (w : f ≫ g = 0) {f' : A ⟶ B} {g' : B ⟶ C}
   (w' : f' ≫ g' = 0) [HasKernels V] [HasCokernels V] [HasImages V] [HasImageMaps V]
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:330:4: warning: unsupported (TODO): `[tacs] -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:336:4: warning: unsupported (TODO): `[tacs] -/
 /-- Custom tactic to golf and speedup boring proofs in `homology.congr`. -/
 private unsafe def aux_tac : tactic Unit :=
   sorry
Diff
@@ -51,7 +51,8 @@ theorem image_le_kernel (w : f ≫ g = 0) : imageSubobject f ≤ kernelSubobject
 /-- The canonical morphism `image_subobject f ⟶ kernel_subobject g` when `f ≫ g = 0`.
 -/
 def imageToKernel (w : f ≫ g = 0) : (imageSubobject f : V) ⟶ (kernelSubobject g : V) :=
-  Subobject.ofLE _ _ (image_le_kernel _ _ w)deriving Mono
+  Subobject.ofLE _ _ (image_le_kernel _ _ w)
+deriving Mono
 #align image_to_kernel imageToKernel
 
 /-- Prefer `image_to_kernel`. -/
Diff
@@ -34,7 +34,7 @@ variable {ι : Type _}
 
 variable {V : Type u} [Category.{v} V] [HasZeroMorphisms V]
 
-open Classical
+open scoped Classical
 
 noncomputable section
 
@@ -42,9 +42,11 @@ section
 
 variable {A B C : V} (f : A ⟶ B) [HasImage f] (g : B ⟶ C) [HasKernel g]
 
+#print image_le_kernel /-
 theorem image_le_kernel (w : f ≫ g = 0) : imageSubobject f ≤ kernelSubobject g :=
   imageSubobject_le_mk _ _ (kernel.lift _ _ w) (by simp)
 #align image_le_kernel image_le_kernel
+-/
 
 /-- The canonical morphism `image_subobject f ⟶ kernel_subobject g` when `f ≫ g = 0`.
 -/
@@ -131,7 +133,7 @@ theorem imageToKernel_comp_hom_inv_comp [HasEqualizers V] [HasImages V] {Z : V}
   by ext; simp
 #align image_to_kernel_comp_hom_inv_comp imageToKernel_comp_hom_inv_comp
 
-open ZeroObject
+open scoped ZeroObject
 
 /-- `image_to_kernel` for `A --0--> B --g--> C`, where `g` is a mono is itself an epi
 (i.e. the sequence is exact at `B`).
Diff
@@ -42,34 +42,16 @@ section
 
 variable {A B C : V} (f : A ⟶ B) [HasImage f] (g : B ⟶ C) [HasKernel g]
 
-/- warning: image_le_kernel -> image_le_kernel is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g], (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) -> (LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.toHasLe.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 B))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g], (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) -> (LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))
-Case conversion may be inaccurate. Consider using '#align image_le_kernel image_le_kernelₓ'. -/
 theorem image_le_kernel (w : f ≫ g = 0) : imageSubobject f ≤ kernelSubobject g :=
   imageSubobject_le_mk _ _ (kernel.lift _ _ w) (by simp)
 #align image_le_kernel image_le_kernel
 
-/- warning: image_to_kernel -> imageToKernel is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g], (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) -> (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g], (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) -> (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)))
-Case conversion may be inaccurate. Consider using '#align image_to_kernel imageToKernelₓ'. -/
 /-- The canonical morphism `image_subobject f ⟶ kernel_subobject g` when `f ≫ g = 0`.
 -/
 def imageToKernel (w : f ≫ g = 0) : (imageSubobject f : V) ⟶ (kernelSubobject g : V) :=
   Subobject.ofLE _ _ (image_le_kernel _ _ w)deriving Mono
 #align image_to_kernel imageToKernel
 
-/- warning: subobject_of_le_as_image_to_kernel -> subobject_ofLE_as_imageToKernel is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (h : LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.toHasLe.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 B))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4) h) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (h : LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4) h) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)
-Case conversion may be inaccurate. Consider using '#align subobject_of_le_as_image_to_kernel subobject_ofLE_as_imageToKernelₓ'. -/
 /-- Prefer `image_to_kernel`. -/
 @[simp]
 theorem subobject_ofLE_as_imageToKernel (w : f ≫ g = 0) (h) :
@@ -77,21 +59,12 @@ theorem subobject_ofLE_as_imageToKernel (w : f ≫ g = 0) (h) :
   rfl
 #align subobject_of_le_as_image_to_kernel subobject_ofLE_as_imageToKernel
 
-/- warning: image_to_kernel_arrow -> imageToKernel_arrow is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align image_to_kernel_arrow imageToKernel_arrowₓ'. -/
 @[simp, reassoc, elementwise]
 theorem imageToKernel_arrow (w : f ≫ g = 0) :
     imageToKernel f g w ≫ (kernelSubobject g).arrow = (imageSubobject f).arrow := by
   simp [imageToKernel]
 #align image_to_kernel_arrow imageToKernel_arrow
 
-/- warning: factor_thru_image_subobject_comp_image_to_kernel -> factorThruImageSubobject_comp_imageToKernel is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (CategoryTheory.Limits.factorThruImageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)) (CategoryTheory.Limits.factorThruKernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4 A f w)
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (CategoryTheory.Limits.factorThruImageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)) (CategoryTheory.Limits.factorThruKernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4 A f w)
-Case conversion may be inaccurate. Consider using '#align factor_thru_image_subobject_comp_image_to_kernel factorThruImageSubobject_comp_imageToKernelₓ'. -/
 -- This is less useful as a `simp` lemma than it initially appears,
 -- as it "loses" the information the morphism factors through the image.
 theorem factorThruImageSubobject_comp_imageToKernel (w : f ≫ g = 0) :
@@ -105,17 +78,11 @@ section
 
 variable {A B C : V} (f : A ⟶ B) (g : B ⟶ C)
 
-/- warning: image_to_kernel_zero_left -> imageToKernel_zero_left is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align image_to_kernel_zero_left imageToKernel_zero_leftₓ'. -/
 @[simp]
 theorem imageToKernel_zero_left [HasKernels V] [HasZeroObject V] {w} :
     imageToKernel (0 : A ⟶ B) g w = 0 := by ext; simp
 #align image_to_kernel_zero_left imageToKernel_zero_left
 
-/- warning: image_to_kernel_zero_right -> imageToKernel_zero_right is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align image_to_kernel_zero_right imageToKernel_zero_rightₓ'. -/
 theorem imageToKernel_zero_right [HasImages V] {w} :
     imageToKernel f (0 : B ⟶ C) w =
       (imageSubobject f).arrow ≫ inv (kernelSubobject (0 : B ⟶ C)).arrow :=
@@ -126,27 +93,18 @@ section
 
 variable [HasKernels V] [HasImages V]
 
-/- warning: image_to_kernel_comp_right -> imageToKernel_comp_right is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align image_to_kernel_comp_right imageToKernel_comp_rightₓ'. -/
 theorem imageToKernel_comp_right {D : V} (h : C ⟶ D) (w : f ≫ g = 0) :
     imageToKernel f (g ≫ h) (by simp [reassoc_of w]) =
       imageToKernel f g w ≫ Subobject.ofLE _ _ (kernelSubobject_comp_le g h) :=
   by ext; simp
 #align image_to_kernel_comp_right imageToKernel_comp_right
 
-/- warning: image_to_kernel_comp_left -> imageToKernel_comp_left is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align image_to_kernel_comp_left imageToKernel_comp_leftₓ'. -/
 theorem imageToKernel_comp_left {Z : V} (h : Z ⟶ A) (w : f ≫ g = 0) :
     imageToKernel (h ≫ f) g (by simp [w]) =
       Subobject.ofLE _ _ (imageSubobject_comp_le h f) ≫ imageToKernel f g w :=
   by ext; simp
 #align image_to_kernel_comp_left imageToKernel_comp_left
 
-/- warning: image_to_kernel_comp_mono -> imageToKernel_comp_mono is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align image_to_kernel_comp_mono imageToKernel_comp_monoₓ'. -/
 @[simp]
 theorem imageToKernel_comp_mono {D : V} (h : C ⟶ D) [Mono h] (w) :
     imageToKernel f (g ≫ h) w =
@@ -155,9 +113,6 @@ theorem imageToKernel_comp_mono {D : V} (h : C ⟶ D) [Mono h] (w) :
   by ext; simp
 #align image_to_kernel_comp_mono imageToKernel_comp_mono
 
-/- warning: image_to_kernel_epi_comp -> imageToKernel_epi_comp is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align image_to_kernel_epi_comp imageToKernel_epi_compₓ'. -/
 @[simp]
 theorem imageToKernel_epi_comp {Z : V} (h : Z ⟶ A) [Epi h] (w) :
     imageToKernel (h ≫ f) g w =
@@ -168,9 +123,6 @@ theorem imageToKernel_epi_comp {Z : V} (h : Z ⟶ A) [Epi h] (w) :
 
 end
 
-/- warning: image_to_kernel_comp_hom_inv_comp -> imageToKernel_comp_hom_inv_comp is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align image_to_kernel_comp_hom_inv_comp imageToKernel_comp_hom_inv_compₓ'. -/
 @[simp]
 theorem imageToKernel_comp_hom_inv_comp [HasEqualizers V] [HasImages V] {Z : V} {i : B ≅ Z} (w) :
     imageToKernel (f ≫ i.Hom) (i.inv ≫ g) w =
@@ -181,9 +133,6 @@ theorem imageToKernel_comp_hom_inv_comp [HasEqualizers V] [HasImages V] {Z : V}
 
 open ZeroObject
 
-/- warning: image_to_kernel_epi_of_zero_of_mono -> imageToKernel_epi_of_zero_of_mono is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align image_to_kernel_epi_of_zero_of_mono imageToKernel_epi_of_zero_of_monoₓ'. -/
 /-- `image_to_kernel` for `A --0--> B --g--> C`, where `g` is a mono is itself an epi
 (i.e. the sequence is exact at `B`).
 -/
@@ -192,9 +141,6 @@ instance imageToKernel_epi_of_zero_of_mono [HasKernels V] [HasZeroObject V] [Mon
   epi_of_target_iso_zero _ (kernelSubobjectIso g ≪≫ kernel.ofMono g)
 #align image_to_kernel_epi_of_zero_of_mono imageToKernel_epi_of_zero_of_mono
 
-/- warning: image_to_kernel_epi_of_epi_of_zero -> imageToKernel_epi_of_epi_of_zero is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align image_to_kernel_epi_of_epi_of_zero imageToKernel_epi_of_epi_of_zeroₓ'. -/
 /-- `image_to_kernel` for `A --f--> B --0--> C`, where `g` is an epi is itself an epi
 (i.e. the sequence is exact at `B`).
 -/
@@ -213,12 +159,6 @@ section
 
 variable {A B C : V} (f : A ⟶ B) [HasImage f] (g : B ⟶ C) [HasKernel g]
 
-/- warning: homology -> homology is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_5 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_6 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) [_inst_7 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_5)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_6)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_5 g _inst_6 w)], V
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_5 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_6 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_7 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_5)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_6)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_5 g _inst_6 w)], V
-Case conversion may be inaccurate. Consider using '#align homology homologyₓ'. -/
 /-- The homology of a pair of morphisms `f : A ⟶ B` and `g : B ⟶ C` satisfying `f ≫ g = 0`
 is the cokernel of the `image_to_kernel` morphism for `f` and `g`.
 -/
@@ -231,28 +171,16 @@ section
 
 variable (w : f ≫ g = 0) [HasCokernel (imageToKernel f g w)]
 
-/- warning: homology.π -> homology.π is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)], Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)], Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)
-Case conversion may be inaccurate. Consider using '#align homology.π homology.πₓ'. -/
 /-- The morphism from cycles to homology. -/
 def homology.π : (kernelSubobject g : V) ⟶ homology f g w :=
   cokernel.π _
 #align homology.π homology.π
 
-/- warning: homology.condition -> homology.condition is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align homology.condition homology.conditionₓ'. -/
 @[simp]
 theorem homology.condition : imageToKernel f g w ≫ homology.π f g w = 0 :=
   cokernel.condition _
 #align homology.condition homology.condition
 
-/- warning: homology.desc -> homology.desc is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align homology.desc homology.descₓ'. -/
 /-- To construct a map out of homology, it suffices to construct a map out of the cycles
 which vanishes on boundaries.
 -/
@@ -261,27 +189,18 @@ def homology.desc {D : V} (k : (kernelSubobject g : V) ⟶ D) (p : imageToKernel
   cokernel.desc _ k p
 #align homology.desc homology.desc
 
-/- warning: homology.π_desc -> homology.π_desc is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align homology.π_desc homology.π_descₓ'. -/
 @[simp, reassoc, elementwise]
 theorem homology.π_desc {D : V} (k : (kernelSubobject g : V) ⟶ D)
     (p : imageToKernel f g w ≫ k = 0) : homology.π f g w ≫ homology.desc f g w k p = k := by
   simp [homology.π, homology.desc]
 #align homology.π_desc homology.π_desc
 
-/- warning: homology.ext -> homology.ext is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align homology.ext homology.extₓ'. -/
 /-- To check two morphisms out of `homology f g w` are equal, it suffices to check on cycles. -/
 @[ext]
 theorem homology.ext {D : V} {k k' : homology f g w ⟶ D}
     (p : homology.π f g w ≫ k = homology.π f g w ≫ k') : k = k' := by ext; exact p
 #align homology.ext homology.ext
 
-/- warning: homology_of_zero_right -> homologyOfZeroRight is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align homology_of_zero_right homologyOfZeroRightₓ'. -/
 /-- The cokernel of the map `Im f ⟶ Ker 0` is isomorphic to the cokernel of `f.` -/
 def homologyOfZeroRight [HasCokernel (imageToKernel f (0 : B ⟶ C) comp_zero)] [HasCokernel f]
     [HasCokernel (image.ι f)] [Epi (factorThruImage f)] :
@@ -291,12 +210,6 @@ def homologyOfZeroRight [HasCokernel (imageToKernel f (0 : B ⟶ C) comp_zero)]
     (cokernelImageι _)
 #align homology_of_zero_right homologyOfZeroRight
 
-/- warning: homology_of_zero_left -> homologyOfZeroLeft is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] [_inst_6 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] [_inst_7 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_8 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B))))] [_inst_9 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) _inst_8)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) _inst_8 g _inst_4 (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C g))], CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_6 A B) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_7 B C g) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C g) _inst_9) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g _inst_4)
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] [_inst_6 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] [_inst_7 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_8 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B)))] [_inst_9 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) _inst_8)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) _inst_8 g _inst_4 (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C g))], CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) _inst_8 g _inst_4 (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C g) _inst_9) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g _inst_4)
-Case conversion may be inaccurate. Consider using '#align homology_of_zero_left homologyOfZeroLeftₓ'. -/
 /-- The kernel of the map `Im 0 ⟶ Ker f` is isomorphic to the kernel of `f.` -/
 def homologyOfZeroLeft [HasZeroObject V] [HasKernels V] [HasImage (0 : A ⟶ B)]
     [HasCokernel (imageToKernel (0 : A ⟶ B) g zero_comp)] :
@@ -305,9 +218,6 @@ def homologyOfZeroLeft [HasZeroObject V] [HasKernels V] [HasImage (0 : A ⟶ B)]
     (kernelSubobjectIso _)
 #align homology_of_zero_left homologyOfZeroLeft
 
-/- warning: homology_zero_zero -> homologyZeroZero is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align homology_zero_zero homologyZeroZeroₓ'. -/
 /-- `homology 0 0 _` is just the middle object. -/
 @[simps]
 def homologyZeroZero [HasZeroObject V] [HasImage (0 : A ⟶ B)]
@@ -383,17 +293,11 @@ theorem homology.map_desc (p : α.right = β.left) {D : V} (k : (kernelSubobject
 #align homology.map_desc homology.map_desc
 -/
 
-/- warning: homology.map_id -> homology.map_id is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align homology.map_id homology.map_idₓ'. -/
 @[simp]
 theorem homology.map_id : homology.map w w (𝟙 _) (𝟙 _) rfl = 𝟙 _ := by
   ext <;> simp only [homology.π_map, kernel_subobject_map_id, category.id_comp, category.comp_id]
 #align homology.map_id homology.map_id
 
-/- warning: homology.comp_right_eq_comp_left -> homology.comp_right_eq_comp_left is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align homology.comp_right_eq_comp_left homology.comp_right_eq_comp_leftₓ'. -/
 /-- Auxiliary lemma for homology computations. -/
 theorem homology.comp_right_eq_comp_left {V : Type _} [Category V] {A₁ B₁ C₁ A₂ B₂ C₂ A₃ B₃ C₃ : V}
     {f₁ : A₁ ⟶ B₁} {g₁ : B₁ ⟶ C₁} {f₂ : A₂ ⟶ B₂} {g₂ : B₂ ⟶ C₂} {f₃ : A₃ ⟶ B₃} {g₃ : B₃ ⟶ C₃}
@@ -414,9 +318,6 @@ theorem homology.map_comp (p₁ : α₁.right = β₁.left) (p₂ : α₂.right
 #align homology.map_comp homology.map_comp
 -/
 
-/- warning: homology.map_iso -> homology.mapIso is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align homology.map_iso homology.mapIsoₓ'. -/
 /-- An isomorphism between two three-term complexes induces an isomorphism on homology. -/
 def homology.mapIso (α : Arrow.mk f₁ ≅ Arrow.mk f₂) (β : Arrow.mk g₁ ≅ Arrow.mk g₂)
     (p : α.Hom.right = β.Hom.left) : homology f₁ g₁ w₁ ≅ homology f₂ g₂ w₂
@@ -509,9 +410,6 @@ def imageToKernel' (w : f ≫ g = 0) : image f ⟶ kernel g :=
 #align image_to_kernel' imageToKernel'
 -/
 
-/- warning: image_subobject_iso_image_to_kernel' -> imageSubobjectIso_imageToKernel' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align image_subobject_iso_image_to_kernel' imageSubobjectIso_imageToKernel'ₓ'. -/
 @[simp]
 theorem imageSubobjectIso_imageToKernel' (w : f ≫ g = 0) :
     (imageSubobjectIso f).Hom ≫ imageToKernel' f g w =
@@ -519,9 +417,6 @@ theorem imageSubobjectIso_imageToKernel' (w : f ≫ g = 0) :
   by ext; simp [imageToKernel']
 #align image_subobject_iso_image_to_kernel' imageSubobjectIso_imageToKernel'
 
-/- warning: image_to_kernel'_kernel_subobject_iso -> imageToKernel'_kernelSubobjectIso is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align image_to_kernel'_kernel_subobject_iso imageToKernel'_kernelSubobjectIsoₓ'. -/
 @[simp]
 theorem imageToKernel'_kernelSubobjectIso (w : f ≫ g = 0) :
     imageToKernel' f g w ≫ (kernelSubobjectIso g).inv =
Diff
@@ -95,9 +95,7 @@ Case conversion may be inaccurate. Consider using '#align factor_thru_image_subo
 -- This is less useful as a `simp` lemma than it initially appears,
 -- as it "loses" the information the morphism factors through the image.
 theorem factorThruImageSubobject_comp_imageToKernel (w : f ≫ g = 0) :
-    factorThruImageSubobject f ≫ imageToKernel f g w = factorThruKernelSubobject g f w :=
-  by
-  ext
+    factorThruImageSubobject f ≫ imageToKernel f g w = factorThruKernelSubobject g f w := by ext;
   simp
 #align factor_thru_image_subobject_comp_image_to_kernel factorThruImageSubobject_comp_imageToKernel
 
@@ -112,9 +110,7 @@ variable {A B C : V} (f : A ⟶ B) (g : B ⟶ C)
 Case conversion may be inaccurate. Consider using '#align image_to_kernel_zero_left imageToKernel_zero_leftₓ'. -/
 @[simp]
 theorem imageToKernel_zero_left [HasKernels V] [HasZeroObject V] {w} :
-    imageToKernel (0 : A ⟶ B) g w = 0 := by
-  ext
-  simp
+    imageToKernel (0 : A ⟶ B) g w = 0 := by ext; simp
 #align image_to_kernel_zero_left imageToKernel_zero_left
 
 /- warning: image_to_kernel_zero_right -> imageToKernel_zero_right is a dubious translation:
@@ -123,9 +119,7 @@ Case conversion may be inaccurate. Consider using '#align image_to_kernel_zero_r
 theorem imageToKernel_zero_right [HasImages V] {w} :
     imageToKernel f (0 : B ⟶ C) w =
       (imageSubobject f).arrow ≫ inv (kernelSubobject (0 : B ⟶ C)).arrow :=
-  by
-  ext
-  simp
+  by ext; simp
 #align image_to_kernel_zero_right imageToKernel_zero_right
 
 section
@@ -138,9 +132,7 @@ Case conversion may be inaccurate. Consider using '#align image_to_kernel_comp_r
 theorem imageToKernel_comp_right {D : V} (h : C ⟶ D) (w : f ≫ g = 0) :
     imageToKernel f (g ≫ h) (by simp [reassoc_of w]) =
       imageToKernel f g w ≫ Subobject.ofLE _ _ (kernelSubobject_comp_le g h) :=
-  by
-  ext
-  simp
+  by ext; simp
 #align image_to_kernel_comp_right imageToKernel_comp_right
 
 /- warning: image_to_kernel_comp_left -> imageToKernel_comp_left is a dubious translation:
@@ -149,9 +141,7 @@ Case conversion may be inaccurate. Consider using '#align image_to_kernel_comp_l
 theorem imageToKernel_comp_left {Z : V} (h : Z ⟶ A) (w : f ≫ g = 0) :
     imageToKernel (h ≫ f) g (by simp [w]) =
       Subobject.ofLE _ _ (imageSubobject_comp_le h f) ≫ imageToKernel f g w :=
-  by
-  ext
-  simp
+  by ext; simp
 #align image_to_kernel_comp_left imageToKernel_comp_left
 
 /- warning: image_to_kernel_comp_mono -> imageToKernel_comp_mono is a dubious translation:
@@ -162,9 +152,7 @@ theorem imageToKernel_comp_mono {D : V} (h : C ⟶ D) [Mono h] (w) :
     imageToKernel f (g ≫ h) w =
       imageToKernel f g ((cancel_mono h).mp (by simpa using w : (f ≫ g) ≫ h = 0 ≫ h)) ≫
         (Subobject.isoOfEq _ _ (kernelSubobject_comp_mono g h)).inv :=
-  by
-  ext
-  simp
+  by ext; simp
 #align image_to_kernel_comp_mono imageToKernel_comp_mono
 
 /- warning: image_to_kernel_epi_comp -> imageToKernel_epi_comp is a dubious translation:
@@ -175,9 +163,7 @@ theorem imageToKernel_epi_comp {Z : V} (h : Z ⟶ A) [Epi h] (w) :
     imageToKernel (h ≫ f) g w =
       Subobject.ofLE _ _ (imageSubobject_comp_le h f) ≫
         imageToKernel f g ((cancel_epi h).mp (by simpa using w : h ≫ f ≫ g = h ≫ 0)) :=
-  by
-  ext
-  simp
+  by ext; simp
 #align image_to_kernel_epi_comp imageToKernel_epi_comp
 
 end
@@ -190,9 +176,7 @@ theorem imageToKernel_comp_hom_inv_comp [HasEqualizers V] [HasImages V] {Z : V}
     imageToKernel (f ≫ i.Hom) (i.inv ≫ g) w =
       (imageSubobjectCompIso _ _).Hom ≫
         imageToKernel f g (by simpa using w) ≫ (kernelSubobjectIsoComp i.inv g).inv :=
-  by
-  ext
-  simp
+  by ext; simp
 #align image_to_kernel_comp_hom_inv_comp imageToKernel_comp_hom_inv_comp
 
 open ZeroObject
@@ -292,10 +276,7 @@ Case conversion may be inaccurate. Consider using '#align homology.ext homology.
 /-- To check two morphisms out of `homology f g w` are equal, it suffices to check on cycles. -/
 @[ext]
 theorem homology.ext {D : V} {k k' : homology f g w ⟶ D}
-    (p : homology.π f g w ≫ k = homology.π f g w ≫ k') : k = k' :=
-  by
-  ext
-  exact p
+    (p : homology.π f g w ≫ k = homology.π f g w ≫ k') : k = k' := by ext; exact p
 #align homology.ext homology.ext
 
 /- warning: homology_of_zero_right -> homologyOfZeroRight is a dubious translation:
@@ -357,10 +338,8 @@ the `image_to_kernel` morphisms intertwine the induced map on kernels and the in
 -/
 @[reassoc]
 theorem imageSubobjectMap_comp_imageToKernel (p : α.right = β.left) :
-    imageToKernel f g w ≫ kernelSubobjectMap β = imageSubobjectMap α ≫ imageToKernel f' g' w' :=
-  by
-  ext
-  simp [p]
+    imageToKernel f g w ≫ kernelSubobjectMap β = imageSubobjectMap α ≫ imageToKernel f' g' w' := by
+  ext; simp [p]
 #align image_subobject_map_comp_image_to_kernel imageSubobjectMap_comp_imageToKernel
 -/
 
@@ -449,12 +428,8 @@ def homology.mapIso (α : Arrow.mk f₁ ≅ Arrow.mk f₂) (β : Arrow.mk g₁ 
         rw [← cancel_mono α.hom.right, ← comma.comp_right, α.inv_hom_id, comma.id_right, p, ←
           comma.comp_left, β.inv_hom_id, comma.id_left]
         rfl)
-  hom_inv_id' := by
-    rw [homology.map_comp]
-    convert homology.map_id _ <;> rw [iso.hom_inv_id]
-  inv_hom_id' := by
-    rw [homology.map_comp]
-    convert homology.map_id _ <;> rw [iso.inv_hom_id]
+  hom_inv_id' := by rw [homology.map_comp]; convert homology.map_id _ <;> rw [iso.hom_inv_id]
+  inv_hom_id' := by rw [homology.map_comp]; convert homology.map_id _ <;> rw [iso.inv_hom_id]
 #align homology.map_iso homology.mapIso
 
 end
@@ -530,10 +505,7 @@ this variant provides a morphism
 which is sometimes more convenient.
 -/
 def imageToKernel' (w : f ≫ g = 0) : image f ⟶ kernel g :=
-  kernel.lift g (image.ι f)
-    (by
-      ext
-      simpa using w)
+  kernel.lift g (image.ι f) (by ext; simpa using w)
 #align image_to_kernel' imageToKernel'
 -/
 
@@ -544,9 +516,7 @@ Case conversion may be inaccurate. Consider using '#align image_subobject_iso_im
 theorem imageSubobjectIso_imageToKernel' (w : f ≫ g = 0) :
     (imageSubobjectIso f).Hom ≫ imageToKernel' f g w =
       imageToKernel f g w ≫ (kernelSubobjectIso g).Hom :=
-  by
-  ext
-  simp [imageToKernel']
+  by ext; simp [imageToKernel']
 #align image_subobject_iso_image_to_kernel' imageSubobjectIso_imageToKernel'
 
 /- warning: image_to_kernel'_kernel_subobject_iso -> imageToKernel'_kernelSubobjectIso is a dubious translation:
@@ -556,9 +526,7 @@ Case conversion may be inaccurate. Consider using '#align image_to_kernel'_kerne
 theorem imageToKernel'_kernelSubobjectIso (w : f ≫ g = 0) :
     imageToKernel' f g w ≫ (kernelSubobjectIso g).inv =
       (imageSubobjectIso f).inv ≫ imageToKernel f g w :=
-  by
-  ext
-  simp [imageToKernel']
+  by ext; simp [imageToKernel']
 #align image_to_kernel'_kernel_subobject_iso imageToKernel'_kernelSubobjectIso
 
 variable [HasCokernels V]
@@ -580,8 +548,7 @@ def homologyIsoCokernelImageToKernel' (w : f ≫ g = 0) :
     simp only [iso.hom_inv_id_assoc, cokernel.π_desc, cokernel.π_desc_assoc, category.assoc,
       coequalizer_as_cokernel]
     exact (category.comp_id _).symm
-  inv_hom_id' := by
-    ext1
+  inv_hom_id' := by ext1;
     simp only [iso.inv_hom_id_assoc, cokernel.π_desc, category.comp_id, cokernel.π_desc_assoc,
       category.assoc]
 #align homology_iso_cokernel_image_to_kernel' homologyIsoCokernelImageToKernel'
@@ -595,9 +562,7 @@ variable [HasEqualizers V]
 def homologyIsoCokernelLift (w : f ≫ g = 0) : homology f g w ≅ cokernel (kernel.lift g f w) :=
   by
   refine' homologyIsoCokernelImageToKernel' f g w ≪≫ _
-  have p : factor_thru_image f ≫ imageToKernel' f g w = kernel.lift g f w :=
-    by
-    ext
+  have p : factor_thru_image f ≫ imageToKernel' f g w = kernel.lift g f w := by ext;
     simp [imageToKernel']
   exact (cokernel_epi_comp _ _).symm ≪≫ cokernel_iso_of_eq p
 #align homology_iso_cokernel_lift homologyIsoCokernelLift
Diff
@@ -78,10 +78,7 @@ theorem subobject_ofLE_as_imageToKernel (w : f ≫ g = 0) (h) :
 #align subobject_of_le_as_image_to_kernel subobject_ofLE_as_imageToKernel
 
 /- warning: image_to_kernel_arrow -> imageToKernel_arrow is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) B) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) B (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) B) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) B (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3))
+<too large>
 Case conversion may be inaccurate. Consider using '#align image_to_kernel_arrow imageToKernel_arrowₓ'. -/
 @[simp, reassoc, elementwise]
 theorem imageToKernel_arrow (w : f ≫ g = 0) :
@@ -111,10 +108,7 @@ section
 variable {A B C : V} (f : A ⟶ B) (g : B ⟶ C)
 
 /- warning: image_to_kernel_zero_left -> imageToKernel_zero_left is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] {w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))}, Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))))))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] {w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))}, Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align image_to_kernel_zero_left imageToKernel_zero_leftₓ'. -/
 @[simp]
 theorem imageToKernel_zero_left [HasKernels V] [HasZeroObject V] {w} :
@@ -124,10 +118,7 @@ theorem imageToKernel_zero_left [HasKernels V] [HasZeroObject V] {w} :
 #align image_to_kernel_zero_left imageToKernel_zero_left
 
 /- warning: image_to_kernel_zero_right -> imageToKernel_zero_right is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))}, Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_3 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_3 A B f) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_3 A B f))) B ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))))) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_3 A B f))) (CategoryTheory.inv.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))))) B (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))))) (CategoryTheory.Limits.isIso_kernelSubobject_zero_arrow.{u1, u2} V _inst_1 B C _inst_2)))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))}, Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_3 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_3 A B f) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_3 A B f))) B (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))))) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_3 A B f))) (CategoryTheory.inv.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))))) B (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))))) (CategoryTheory.Limits.isIso_kernelSubobject_zero_arrow.{u1, u2} V _inst_1 B C _inst_2)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align image_to_kernel_zero_right imageToKernel_zero_rightₓ'. -/
 theorem imageToKernel_zero_right [HasImages V] {w} :
     imageToKernel f (0 : B ⟶ C) w =
@@ -142,10 +133,7 @@ section
 variable [HasKernels V] [HasImages V]
 
 /- warning: image_to_kernel_comp_right -> imageToKernel_comp_right is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {D : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C D) (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B D f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) True (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) True) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) True ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) h) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))) (CategoryTheory.reassoc_of.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) w (forall {X' : V} (f' : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C X'), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B X' f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C X' g f')) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')) (fun {X' : V} (f' : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C X') => Eq.mp.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B X' f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C X' g f')) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')) ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X')) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B X' f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C X' g f')) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 A B C X' f g f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f') (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f'))) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f'))) (Eq.ndrec.{0, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (fun (_a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) => Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' _a f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f'))) (rfl.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f'))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) w)) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')))) D h) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A C D h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))))) (propext (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) True (eq_self_iff_true.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))))))) trivial)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h))) (CategoryTheory.Limits.kernelSubobject_comp_le.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) D h (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)))))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {D : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C D) (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B D f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (of_eq_true (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D)))) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D)))) True (congrFun.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) => Prop) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D)))) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D)) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) h) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D))) ((fun {Z : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C Z) => id.{0} (forall {Z : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C Z), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C Z g h)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C Z (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) h)) (Eq.mp.{0} (forall (a : V) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C a), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A a) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C a (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) a_1) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C a (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) a_1)) (forall (a : V) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C a), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A a) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B a f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C a g a_1)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C a (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) a_1)) (forall_congr.{succ u2} V (fun (a : V) => forall (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C a), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A a) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C a (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) a_1) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C a (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) a_1)) (fun (a : V) => forall (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C a), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A a) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B a f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C a g a_1)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C a (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) a_1)) (fun {Z : V} => forall_congr.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C Z) (fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C Z) => Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) a) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C Z (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) a)) (fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C Z) => Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C Z g a)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C Z (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) a)) (fun (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C Z) => congrFun.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) => Prop) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C Z g h))) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C Z g h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z)) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 A B C Z f g h)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C Z (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) h)))) (CategoryTheory.eq_whisker'.{u2, u1} V _inst_1 A C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) w)) Z h) D h) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A C D h))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D)))) (eq_self.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D))))))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h))) (CategoryTheory.Limits.kernelSubobject_comp_le.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) D h (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align image_to_kernel_comp_right imageToKernel_comp_rightₓ'. -/
 theorem imageToKernel_comp_right {D : V} (h : C ⟶ D) (w : f ≫ g = 0) :
     imageToKernel f (g ≫ h) (by simp [reassoc_of w]) =
@@ -156,10 +144,7 @@ theorem imageToKernel_comp_right {D : V} (h : C ⟶ D) (w : f ≫ g = 0) :
 #align image_to_kernel_comp_right imageToKernel_comp_right
 
 /- warning: image_to_kernel_comp_left -> imageToKernel_comp_left is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {Z : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) True (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) True) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) True ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 Z A B C h f g) ((fun (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) ᾰ ᾰ_1) (ᾰ_2 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (ᾰ_3 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ᾰ_2 ᾰ_3) => congr.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C ᾰ) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C ᾰ_1) ᾰ_2 ᾰ_3 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) -> (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C)) ᾰ ᾰ_1 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C) e_1) e_2) h h (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) w)) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 Z A h C)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))))) (propext (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) True (eq_self_iff_true.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))))))) trivial)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobject_comp_le.{u1, u2} V _inst_1 A B Z h f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {Z : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (of_eq_true (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) True (congrFun.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) => Prop) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C)) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C))) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 Z A B C h f g) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h) w)) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 Z A h C))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) (eq_self.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C))))))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobject_comp_le.{u1, u2} V _inst_1 A B Z h f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w))
+<too large>
 Case conversion may be inaccurate. Consider using '#align image_to_kernel_comp_left imageToKernel_comp_leftₓ'. -/
 theorem imageToKernel_comp_left {Z : V} (h : Z ⟶ A) (w : f ≫ g = 0) :
     imageToKernel (h ≫ f) g (by simp [w]) =
@@ -170,10 +155,7 @@ theorem imageToKernel_comp_left {Z : V} (h : Z ⟶ A) (w : f ≫ g = 0) :
 #align image_to_kernel_comp_left imageToKernel_comp_left
 
 /- warning: image_to_kernel_comp_mono -> imageToKernel_comp_mono is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {D : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C D) [_inst_5 : CategoryTheory.Mono.{u1, u2} V _inst_1 C D h] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B D f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (Iff.mp (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (CategoryTheory.cancel_mono.{u1, u2} V _inst_1 C D A h _inst_5 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))))) ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 A B C D f g h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) h) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A C D h))) (Eq.mp.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) (rfl.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))))) w)))) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Subobject.isoOfEq.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobject_comp_mono.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) D h _inst_5))))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {D : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C D) [_inst_5 : CategoryTheory.Mono.{u1, u2} V _inst_1 C D h] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B D f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (Iff.mp (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (CategoryTheory.cancel_mono.{u1, u2} V _inst_1 C D A h _inst_5 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D)))) (id.{0} (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D))))) (congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) h) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D))) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D)) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 A B C D f g h)) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A C D h))) w))) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Subobject.isoOfEq.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobject_comp_mono.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) D h _inst_5))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align image_to_kernel_comp_mono imageToKernel_comp_monoₓ'. -/
 @[simp]
 theorem imageToKernel_comp_mono {D : V} (h : C ⟶ D) [Mono h] (w) :
@@ -186,10 +168,7 @@ theorem imageToKernel_comp_mono {D : V} (h : C ⟶ D) [Mono h] (w) :
 #align image_to_kernel_comp_mono imageToKernel_comp_mono
 
 /- warning: image_to_kernel_epi_comp -> imageToKernel_epi_comp is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {Z : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) [_inst_5 : CategoryTheory.Epi.{u1, u2} V _inst_1 Z A h] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobject_comp_le.{u1, u2} V _inst_1 A B Z h f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (Iff.mp (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (CategoryTheory.cancel_epi.{u1, u2} V _inst_1 Z A C h _inst_5 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))))) ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 Z A h C))) (Eq.mp.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 Z A B C h f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))))) w)))))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {Z : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) [_inst_5 : CategoryTheory.Epi.{u1, u2} V _inst_1 Z A h] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobject_comp_le.{u1, u2} V _inst_1 A B Z h f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (Iff.mp (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (CategoryTheory.cancel_epi.{u1, u2} V _inst_1 Z A C h _inst_5 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) (id.{0} (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C))))) (congrArg.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) Prop (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g))) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 Z A h C))) (Eq.mp.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) (congrFun.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) => Prop) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g))) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C)) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 Z A B C h f g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) w)))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align image_to_kernel_epi_comp imageToKernel_epi_compₓ'. -/
 @[simp]
 theorem imageToKernel_epi_comp {Z : V} (h : Z ⟶ A) [Epi h] (w) :
@@ -204,10 +183,7 @@ theorem imageToKernel_epi_comp {Z : V} (h : Z ⟶ A) [Epi h] (w) :
 end
 
 /- warning: image_to_kernel_comp_hom_inv_comp -> imageToKernel_comp_hom_inv_comp is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasEqualizers.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {Z : V} {i : CategoryTheory.Iso.{u1, u2} V _inst_1 B Z} (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 Z)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) _inst_3 (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 Z)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) _inst_3 (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 Z)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) _inst_3 (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 Z)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))) (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 Z)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) _inst_3 (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.imageSubobjectCompIso.{u1, u2} V _inst_1 A B _inst_3 f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 Z)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))) (rfl.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))))) (Eq.mp.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B Z C (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 A B Z C f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) ((fun (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) ᾰ ᾰ_1) (ᾰ_2 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (ᾰ_3 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) ᾰ_2 ᾰ_3) => congr.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C ᾰ) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C ᾰ_1) ᾰ_2 ᾰ_3 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) -> (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C)) ᾰ ᾰ_1 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C) e_1) e_2) f f (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) f) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B Z C (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) g (CategoryTheory.Iso.hom_inv_id_assoc.{u1, u2} V _inst_1 B Z i C g))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))) w))) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 Z)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g))) (CategoryTheory.Limits.kernelSubobjectIsoComp.{u1, u2} V _inst_1 B C _inst_2 Z (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasEqualizers.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {Z : V} {i : CategoryTheory.Iso.{u1, u2} V _inst_1 B Z} (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 Z)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 Z)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 Z)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 Z)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))) (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 Z)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.imageSubobjectCompIso.{u1, u2} V _inst_1 A B _inst_3 f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 Z)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g) (Eq.mp.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (congrFun.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) => Prop) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C)) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B Z C (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 A B Z C f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B Z C (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) g (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f) (CategoryTheory.Iso.hom_inv_id_assoc.{u1, u2} V _inst_1 B Z i C g)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) w)) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 Z)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g))) (CategoryTheory.Limits.kernelSubobjectIsoComp.{u1, u2} V _inst_1 B C _inst_2 Z (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align image_to_kernel_comp_hom_inv_comp imageToKernel_comp_hom_inv_compₓ'. -/
 @[simp]
 theorem imageToKernel_comp_hom_inv_comp [HasEqualizers V] [HasImages V] {Z : V} {i : B ≅ Z} (w) :
@@ -222,10 +198,7 @@ theorem imageToKernel_comp_hom_inv_comp [HasEqualizers V] [HasImages V] {Z : V}
 open ZeroObject
 
 /- warning: image_to_kernel_epi_of_zero_of_mono -> imageToKernel_epi_of_zero_of_mono is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] [_inst_5 : CategoryTheory.Mono.{u1, u2} V _inst_1 B C g], CategoryTheory.Epi.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))) (propext (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True (eq_self_iff_true.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))))) trivial))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] [_inst_5 : CategoryTheory.Mono.{u1, u2} V _inst_1 B C g], CategoryTheory.Epi.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (of_eq_true (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) True (congrFun.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) => Prop) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) g)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C)) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (eq_self.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align image_to_kernel_epi_of_zero_of_mono imageToKernel_epi_of_zero_of_monoₓ'. -/
 /-- `image_to_kernel` for `A --0--> B --g--> C`, where `g` is a mono is itself an epi
 (i.e. the sequence is exact at `B`).
@@ -236,10 +209,7 @@ instance imageToKernel_epi_of_zero_of_mono [HasKernels V] [HasZeroObject V] [Mon
 #align image_to_kernel_epi_of_zero_of_mono imageToKernel_epi_of_zero_of_mono
 
 /- warning: image_to_kernel_epi_of_epi_of_zero -> imageToKernel_epi_of_epi_of_zero is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Epi.{u1, u2} V _inst_1 A B f], CategoryTheory.Epi.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_3 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_3 A B f) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 A B f C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))) (propext (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True (eq_self_iff_true.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))))) trivial))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Epi.{u1, u2} V _inst_1 A B f], CategoryTheory.Epi.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_3 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_3 A B f) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (of_eq_true (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) True (congrFun.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) => Prop) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C)) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 A B f C)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (eq_self.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align image_to_kernel_epi_of_epi_of_zero imageToKernel_epi_of_epi_of_zeroₓ'. -/
 /-- `image_to_kernel` for `A --f--> B --0--> C`, where `g` is an epi is itself an epi
 (i.e. the sequence is exact at `B`).
@@ -289,10 +259,7 @@ def homology.π : (kernelSubobject g : V) ⟶ homology f g w :=
 #align homology.π homology.π
 
 /- warning: homology.condition -> homology.condition is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)], Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)))))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)], Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align homology.condition homology.conditionₓ'. -/
 @[simp]
 theorem homology.condition : imageToKernel f g w ≫ homology.π f g w = 0 :=
@@ -300,10 +267,7 @@ theorem homology.condition : imageToKernel f g w ≫ homology.π f g w = 0 :=
 #align homology.condition homology.condition
 
 /- warning: homology.desc -> homology.desc is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)] {D : V} (k : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) k) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D))))) -> (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D)
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)] {D : V} (k : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) k) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D)))) -> (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D)
+<too large>
 Case conversion may be inaccurate. Consider using '#align homology.desc homology.descₓ'. -/
 /-- To construct a map out of homology, it suffices to construct a map out of the cycles
 which vanishes on boundaries.
@@ -314,10 +278,7 @@ def homology.desc {D : V} (k : (kernelSubobject g : V) ⟶ D) (p : imageToKernel
 #align homology.desc homology.desc
 
 /- warning: homology.π_desc -> homology.π_desc is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)] {D : V} (k : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D) (p : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) k) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) (homology.desc.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5 D k p)) k
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)] {D : V} (k : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D) (p : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) k) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) (homology.desc.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5 D k p)) k
+<too large>
 Case conversion may be inaccurate. Consider using '#align homology.π_desc homology.π_descₓ'. -/
 @[simp, reassoc, elementwise]
 theorem homology.π_desc {D : V} (k : (kernelSubobject g : V) ⟶ D)
@@ -326,10 +287,7 @@ theorem homology.π_desc {D : V} (k : (kernelSubobject g : V) ⟶ D)
 #align homology.π_desc homology.π_desc
 
 /- warning: homology.ext -> homology.ext is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)] {D : V} {k : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D} {k' : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D}, (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) k) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) k')) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D) k k')
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)] {D : V} {k : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D} {k' : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D}, (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) k) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) k')) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D) k k')
+<too large>
 Case conversion may be inaccurate. Consider using '#align homology.ext homology.extₓ'. -/
 /-- To check two morphisms out of `homology f g w` are equal, it suffices to check on cycles. -/
 @[ext]
@@ -341,10 +299,7 @@ theorem homology.ext {D : V} {k k' : homology f g w ⟶ D}
 #align homology.ext homology.ext
 
 /- warning: homology_of_zero_right -> homologyOfZeroRight is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] [_inst_6 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (homologyOfZeroRight._proof_1.{u2, u1} V _inst_1 _inst_2 B C))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (homologyOfZeroRight._proof_2.{u2, u1} V _inst_1 _inst_2 B C) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 A B f C))] [_inst_7 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 A B f] [_inst_8 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f _inst_3) B (CategoryTheory.Limits.image.ι.{u1, u2} V _inst_1 A B f _inst_3)] [_inst_9 : CategoryTheory.Epi.{u1, u2} V _inst_1 A (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.factorThruImage.{u1, u2} V _inst_1 A B f _inst_3)], CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (homologyOfZeroRight._proof_3.{u2, u1} V _inst_1 _inst_2 B C) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 A B f C) _inst_6) (CategoryTheory.Limits.cokernel.{u1, u2} V _inst_1 _inst_2 A B f _inst_7)
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] [_inst_6 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 A B f C))] [_inst_7 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 A B f] [_inst_8 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f _inst_3) B (CategoryTheory.Limits.image.ι.{u1, u2} V _inst_1 A B f _inst_3)] [_inst_9 : CategoryTheory.Epi.{u1, u2} V _inst_1 A (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.factorThruImage.{u1, u2} V _inst_1 A B f _inst_3)], CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 A B f C) _inst_6) (CategoryTheory.Limits.cokernel.{u1, u2} V _inst_1 _inst_2 A B f _inst_7)
+<too large>
 Case conversion may be inaccurate. Consider using '#align homology_of_zero_right homologyOfZeroRightₓ'. -/
 /-- The cokernel of the map `Im f ⟶ Ker 0` is isomorphic to the cokernel of `f.` -/
 def homologyOfZeroRight [HasCokernel (imageToKernel f (0 : B ⟶ C) comp_zero)] [HasCokernel f]
@@ -370,10 +325,7 @@ def homologyOfZeroLeft [HasZeroObject V] [HasKernels V] [HasImage (0 : A ⟶ B)]
 #align homology_of_zero_left homologyOfZeroLeft
 
 /- warning: homology_zero_zero -> homologyZeroZero is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} [_inst_6 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] [_inst_7 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B))))] [_inst_8 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) _inst_7)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (homologyZeroZero._proof_1.{u2, u1} V _inst_1 _inst_2 B C))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) _inst_7 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (homologyZeroZero._proof_2.{u2, u1} V _inst_1 _inst_2 B C) (homologyZeroZero._proof_3.{u2, u1} V _inst_1 _inst_2 A B C))], CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) _inst_7 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (homologyZeroZero._proof_4.{u2, u1} V _inst_1 _inst_2 B C) (homologyZeroZero._proof_5.{u2, u1} V _inst_1 _inst_2 A B C) _inst_8) B
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} [_inst_6 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] [_inst_7 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B)))] [_inst_8 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) _inst_7)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) _inst_7 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))))], CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) _inst_7 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) _inst_8) B
+<too large>
 Case conversion may be inaccurate. Consider using '#align homology_zero_zero homologyZeroZeroₓ'. -/
 /-- `homology 0 0 _` is just the middle object. -/
 @[simps]
@@ -453,10 +405,7 @@ theorem homology.map_desc (p : α.right = β.left) {D : V} (k : (kernelSubobject
 -/
 
 /- warning: homology.map_id -> homology.map_id is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} {f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B} [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] {g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C} [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) [_inst_16 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)], Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_16) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_16)) (homology.map.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w A B C f _inst_3 g _inst_4 w (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f)) (CategoryTheory.Limits.hasImageMapOfIsIso.{u1, u2} V _inst_1 (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.Limits.Hom.hasImage.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.Hom.hasImage.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f)) (CategoryTheory.IsIso.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f))) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B C g)) _inst_16 _inst_16 (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f))) (CategoryTheory.CommaMorphism.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f))))) (CategoryTheory.CategoryStruct.id.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_16))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} {f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B} [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] {g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C} [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_16 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)], Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_16) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_16)) (homology.map.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w A B C f _inst_3 g _inst_4 w (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f)) (CategoryTheory.Limits.hasImageMapOfIsIso.{u1, u2} V _inst_1 (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.Limits.instHasImageObjToQuiverToCategoryStructToPrefunctorIdLeftMkRightHom.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.instHasImageObjToQuiverToCategoryStructToPrefunctorIdLeftMkRightHom.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f)) (CategoryTheory.IsIso.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f))) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B C g)) _inst_16 _inst_16 (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f))) (CategoryTheory.CommaMorphism.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f))))) (CategoryTheory.CategoryStruct.id.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_16))
+<too large>
 Case conversion may be inaccurate. Consider using '#align homology.map_id homology.map_idₓ'. -/
 @[simp]
 theorem homology.map_id : homology.map w w (𝟙 _) (𝟙 _) rfl = 𝟙 _ := by
@@ -464,10 +413,7 @@ theorem homology.map_id : homology.map w w (𝟙 _) (𝟙 _) rfl = 𝟙 _ := by
 #align homology.map_id homology.map_id
 
 /- warning: homology.comp_right_eq_comp_left -> homology.comp_right_eq_comp_left is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u1}} [_inst_21 : CategoryTheory.Category.{u2, u1} V] {A₁ : V} {B₁ : V} {C₁ : V} {A₂ : V} {B₂ : V} {C₂ : V} {A₃ : V} {B₃ : V} {C₃ : V} {f₁ : Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) A₁ B₁} {g₁ : Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) B₁ C₁} {f₂ : Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) A₂ B₂} {g₂ : Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) B₂ C₂} {f₃ : Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) A₃ B₃} {g₃ : Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) B₃ C₃} {α₁ : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Arrow.category.{u2, u1} V _inst_21))) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₂ B₂ f₂)} {β₁ : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Arrow.category.{u2, u1} V _inst_21))) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₂ C₂ g₂)} {α₂ : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Arrow.category.{u2, u1} V _inst_21))) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₂ B₂ f₂) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₃ B₃ f₃)} {β₂ : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Arrow.category.{u2, u1} V _inst_21))) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₂ C₂ g₂) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₃ C₃ g₃)}, (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) (CategoryTheory.Comma.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₁ B₁ f₁)) (CategoryTheory.Comma.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₂ B₂ f₂))) (CategoryTheory.CommaMorphism.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₂ B₂ f₂) α₁) (CategoryTheory.CommaMorphism.left.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₂ C₂ g₂) β₁)) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) (CategoryTheory.Comma.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₂ B₂ f₂)) (CategoryTheory.Comma.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₃ B₃ f₃))) (CategoryTheory.CommaMorphism.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₂ B₂ f₂) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₃ B₃ f₃) α₂) (CategoryTheory.CommaMorphism.left.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₂ C₂ g₂) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₃ C₃ g₃) β₂)) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) (CategoryTheory.Comma.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₁ B₁ f₁)) (CategoryTheory.Comma.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₃ B₃ f₃))) (CategoryTheory.CommaMorphism.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₃ B₃ f₃) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Arrow.category.{u2, u1} V _inst_21)) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₂ B₂ f₂) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₃ B₃ f₃) α₁ α₂)) (CategoryTheory.CommaMorphism.left.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₃ C₃ g₃) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Arrow.category.{u2, u1} V _inst_21)) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₂ C₂ g₂) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₃ C₃ g₃) β₁ β₂)))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_21 : CategoryTheory.Category.{u1, u2} V] {A₁ : V} {B₁ : V} {C₁ : V} {A₂ : V} {B₂ : V} {C₂ : V} {A₃ : V} {B₃ : V} {C₃ : V} {f₁ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) A₁ B₁} {g₁ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) B₁ C₁} {f₂ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) A₂ B₂} {g₂ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) B₂ C₂} {f₃ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) A₃ B₃} {g₃ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) B₃ C₃} {α₁ : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_21))) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₂ B₂ f₂)} {β₁ : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_21))) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₂ C₂ g₂)} {α₂ : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_21))) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₂ B₂ f₂) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₃ B₃ f₃)} {β₂ : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_21))) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₂ C₂ g₂) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₃ C₃ g₃)}, (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₁ B₁ f₁)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₂ B₂ f₂))) (CategoryTheory.CommaMorphism.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₂ B₂ f₂) α₁) (CategoryTheory.CommaMorphism.left.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₂ C₂ g₂) β₁)) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₂ B₂ f₂)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₃ B₃ f₃))) (CategoryTheory.CommaMorphism.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₂ B₂ f₂) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₃ B₃ f₃) α₂) (CategoryTheory.CommaMorphism.left.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₂ C₂ g₂) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₃ C₃ g₃) β₂)) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₁ B₁ f₁)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₃ B₃ f₃))) (CategoryTheory.CommaMorphism.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₃ B₃ f₃) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_21)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₂ B₂ f₂) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₃ B₃ f₃) α₁ α₂)) (CategoryTheory.CommaMorphism.left.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₃ C₃ g₃) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_21)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₂ C₂ g₂) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₃ C₃ g₃) β₁ β₂)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align homology.comp_right_eq_comp_left homology.comp_right_eq_comp_leftₓ'. -/
 /-- Auxiliary lemma for homology computations. -/
 theorem homology.comp_right_eq_comp_left {V : Type _} [Category V] {A₁ B₁ C₁ A₂ B₂ C₂ A₃ B₃ C₃ : V}
@@ -490,10 +436,7 @@ theorem homology.map_comp (p₁ : α₁.right = β₁.left) (p₂ : α₂.right
 -/
 
 /- warning: homology.map_iso -> homology.mapIso is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A₁ : V} {B₁ : V} {C₁ : V} {f₁ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ B₁} [_inst_8 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A₁ B₁ f₁] {g₁ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B₁ C₁} [_inst_9 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B₁ C₁ g₁] (w₁ : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ C₁) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A₁ B₁ C₁ f₁ g₁) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ C₁) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ C₁) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ C₁) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A₁ C₁))))) {A₂ : V} {B₂ : V} {C₂ : V} {f₂ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ B₂} [_inst_10 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A₂ B₂ f₂] {g₂ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B₂ C₂} [_inst_11 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B₂ C₂ g₂] (w₂ : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ C₂) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A₂ B₂ C₂ f₂ g₂) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ C₂) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ C₂) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ C₂) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A₂ C₂))))) [_inst_18 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B₁)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A₁ B₁ f₁ _inst_8)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B₁)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B₁ C₁ _inst_2 g₁ _inst_9)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A₁ B₁ C₁ f₁ _inst_8 g₁ _inst_9 w₁)] [_inst_19 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B₂)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A₂ B₂ f₂ _inst_10)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B₂)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B₂ C₂ _inst_2 g₂ _inst_11)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A₂ B₂ C₂ f₂ _inst_10 g₂ _inst_11 w₂)] (α : CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂)) (β : CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₂ C₂ g₂)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂))) (CategoryTheory.CommaMorphism.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂) (CategoryTheory.Iso.hom.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂) α)) (CategoryTheory.CommaMorphism.left.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₂ C₂ g₂) (CategoryTheory.Iso.hom.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₂ C₂ g₂) β))) -> (CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A₁ B₁ C₁ f₁ _inst_8 g₁ _inst_9 w₁ _inst_18) (homology.{u1, u2} V _inst_1 _inst_2 A₂ B₂ C₂ f₂ _inst_10 g₂ _inst_11 w₂ _inst_19))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A₁ : V} {B₁ : V} {C₁ : V} {f₁ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ B₁} [_inst_8 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A₁ B₁ f₁] {g₁ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B₁ C₁} [_inst_9 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B₁ C₁ g₁] (w₁ : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ C₁) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A₁ B₁ C₁ f₁ g₁) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ C₁) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ C₁) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A₁ C₁)))) {A₂ : V} {B₂ : V} {C₂ : V} {f₂ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ B₂} [_inst_10 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A₂ B₂ f₂] {g₂ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B₂ C₂} [_inst_11 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B₂ C₂ g₂] (w₂ : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ C₂) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A₂ B₂ C₂ f₂ g₂) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ C₂) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ C₂) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A₂ C₂)))) [_inst_18 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₁))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₁))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B₁)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A₁ B₁ f₁ _inst_8)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₁))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₁))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B₁)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B₁ C₁ _inst_2 g₁ _inst_9)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A₁ B₁ C₁ f₁ _inst_8 g₁ _inst_9 w₁)] [_inst_19 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₂))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₂))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B₂)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A₂ B₂ f₂ _inst_10)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₂))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₂))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B₂)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B₂ C₂ _inst_2 g₂ _inst_11)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A₂ B₂ C₂ f₂ _inst_10 g₂ _inst_11 w₂)] (α : CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂)) (β : CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₂ C₂ g₂)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂))) (CategoryTheory.CommaMorphism.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂) (CategoryTheory.Iso.hom.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂) α)) (CategoryTheory.CommaMorphism.left.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₂ C₂ g₂) (CategoryTheory.Iso.hom.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₂ C₂ g₂) β))) -> (CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A₁ B₁ C₁ f₁ _inst_8 g₁ _inst_9 w₁ _inst_18) (homology.{u1, u2} V _inst_1 _inst_2 A₂ B₂ C₂ f₂ _inst_10 g₂ _inst_11 w₂ _inst_19))
+<too large>
 Case conversion may be inaccurate. Consider using '#align homology.map_iso homology.mapIsoₓ'. -/
 /-- An isomorphism between two three-term complexes induces an isomorphism on homology. -/
 def homology.mapIso (α : Arrow.mk f₁ ≅ Arrow.mk f₂) (β : Arrow.mk g₁ ≅ Arrow.mk g₂)
@@ -527,7 +470,6 @@ variable {A B C : V} {f : A ⟶ B} {g : B ⟶ C} (w : f ≫ g = 0) {f' : A ⟶ B
 /-- Custom tactic to golf and speedup boring proofs in `homology.congr`. -/
 private unsafe def aux_tac : tactic Unit :=
   sorry
-#align aux_tac aux_tac
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1444910979.aux_tac -/
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1444910979.aux_tac -/
@@ -596,10 +538,7 @@ def imageToKernel' (w : f ≫ g = 0) : image f ⟶ kernel g :=
 -/
 
 /- warning: image_subobject_iso_image_to_kernel' -> imageSubobjectIso_imageToKernel' is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobjectIso.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) (imageToKernel'.{u1, u2} V _inst_1 _inst_2 A B C f g _inst_3 _inst_4 w)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobjectIso.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobjectIso.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (imageToKernel'.{u1, u2} V _inst_1 _inst_2 A B C f g _inst_3 _inst_4 w)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobjectIso.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align image_subobject_iso_image_to_kernel' imageSubobjectIso_imageToKernel'ₓ'. -/
 @[simp]
 theorem imageSubobjectIso_imageToKernel' (w : f ≫ g = 0) :
@@ -611,10 +550,7 @@ theorem imageSubobjectIso_imageToKernel' (w : f ≫ g = 0) :
 #align image_subobject_iso_image_to_kernel' imageSubobjectIso_imageToKernel'
 
 /- warning: image_to_kernel'_kernel_subobject_iso -> imageToKernel'_kernelSubobjectIso is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (imageToKernel'.{u1, u2} V _inst_1 _inst_2 A B C f g _inst_3 _inst_4 w) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobjectIso.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobjectIso.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (imageToKernel'.{u1, u2} V _inst_1 _inst_2 A B C f g _inst_3 _inst_4 w) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobjectIso.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobjectIso.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w))
+<too large>
 Case conversion may be inaccurate. Consider using '#align image_to_kernel'_kernel_subobject_iso imageToKernel'_kernelSubobjectIsoₓ'. -/
 @[simp]
 theorem imageToKernel'_kernelSubobjectIso (w : f ≫ g = 0) :
Diff
@@ -83,7 +83,7 @@ lean 3 declaration is
 but is expected to have type
   forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) B) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) B (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3))
 Case conversion may be inaccurate. Consider using '#align image_to_kernel_arrow imageToKernel_arrowₓ'. -/
-@[simp, reassoc.1, elementwise]
+@[simp, reassoc, elementwise]
 theorem imageToKernel_arrow (w : f ≫ g = 0) :
     imageToKernel f g w ≫ (kernelSubobject g).arrow = (imageSubobject f).arrow := by
   simp [imageToKernel]
@@ -319,7 +319,7 @@ lean 3 declaration is
 but is expected to have type
   forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)] {D : V} (k : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D) (p : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) k) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) (homology.desc.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5 D k p)) k
 Case conversion may be inaccurate. Consider using '#align homology.π_desc homology.π_descₓ'. -/
-@[simp, reassoc.1, elementwise]
+@[simp, reassoc, elementwise]
 theorem homology.π_desc {D : V} (k : (kernelSubobject g : V) ⟶ D)
     (p : imageToKernel f g w ≫ k = 0) : homology.π f g w ≫ homology.desc f g w k p = k := by
   simp [homology.π, homology.desc]
@@ -403,7 +403,7 @@ variable {f g} (w : f ≫ g = 0) {A' B' C' : V} {f' : A' ⟶ B'} [HasImage f'] {
 a pair `f g` and a pair `f' g'` satisfying `f ≫ g = 0` and `f' ≫ g' = 0`,
 the `image_to_kernel` morphisms intertwine the induced map on kernels and the induced map on images.
 -/
-@[reassoc.1]
+@[reassoc]
 theorem imageSubobjectMap_comp_imageToKernel (p : α.right = β.left) :
     imageToKernel f g w ≫ kernelSubobjectMap β = imageSubobjectMap α ≫ imageToKernel f' g' w' :=
   by
@@ -434,7 +434,7 @@ def homology.map (p : α.right = β.left) : homology f g w ⟶ homology f' g' w'
 -/
 
 #print homology.π_map /-
-@[simp, reassoc.1, elementwise]
+@[simp, reassoc, elementwise]
 theorem homology.π_map (p : α.right = β.left) :
     homology.π f g w ≫ homology.map w w' α β p = kernelSubobjectMap β ≫ homology.π f' g' w' := by
   simp only [homology.π, homology.map, cokernel.π_desc]
@@ -442,7 +442,7 @@ theorem homology.π_map (p : α.right = β.left) :
 -/
 
 #print homology.map_desc /-
-@[simp, reassoc.1, elementwise]
+@[simp, reassoc, elementwise]
 theorem homology.map_desc (p : α.right = β.left) {D : V} (k : (kernelSubobject g' : V) ⟶ D)
     (z : imageToKernel f' g' w' ≫ k = 0) :
     homology.map w w' α β p ≫ homology.desc f' g' w' k z =
@@ -479,7 +479,7 @@ theorem homology.comp_right_eq_comp_left {V : Type _} [Category V] {A₁ B₁ C
 #align homology.comp_right_eq_comp_left homology.comp_right_eq_comp_left
 
 #print homology.map_comp /-
-@[reassoc.1]
+@[reassoc]
 theorem homology.map_comp (p₁ : α₁.right = β₁.left) (p₂ : α₂.right = β₂.left) :
     homology.map w₁ w₂ α₁ β₁ p₁ ≫ homology.map w₂ w₃ α₂ β₂ p₂ =
       homology.map w₁ w₃ (α₁ ≫ α₂) (β₁ ≫ β₂) (homology.comp_right_eq_comp_left p₁ p₂) :=
Diff
@@ -42,11 +42,15 @@ section
 
 variable {A B C : V} (f : A ⟶ B) [HasImage f] (g : B ⟶ C) [HasKernel g]
 
-#print image_le_kernel /-
+/- warning: image_le_kernel -> image_le_kernel is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g], (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) -> (LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.toHasLe.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 B))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g], (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) -> (LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))
+Case conversion may be inaccurate. Consider using '#align image_le_kernel image_le_kernelₓ'. -/
 theorem image_le_kernel (w : f ≫ g = 0) : imageSubobject f ≤ kernelSubobject g :=
   imageSubobject_le_mk _ _ (kernel.lift _ _ w) (by simp)
 #align image_le_kernel image_le_kernel
--/
 
 /- warning: image_to_kernel -> imageToKernel is a dubious translation:
 lean 3 declaration is
@@ -62,7 +66,7 @@ def imageToKernel (w : f ≫ g = 0) : (imageSubobject f : V) ⟶ (kernelSubobjec
 
 /- warning: subobject_of_le_as_image_to_kernel -> subobject_ofLE_as_imageToKernel is a dubious translation:
 lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (h : LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 B))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4) h) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (h : LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.toHasLe.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 B))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4) h) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)
 but is expected to have type
   forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (h : LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4) h) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)
 Case conversion may be inaccurate. Consider using '#align subobject_of_le_as_image_to_kernel subobject_ofLE_as_imageToKernelₓ'. -/
Diff
@@ -525,10 +525,10 @@ private unsafe def aux_tac : tactic Unit :=
   sorry
 #align aux_tac aux_tac
 
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1451867403.aux_tac -/
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1451867403.aux_tac -/
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1451867403.aux_tac -/
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1451867403.aux_tac -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1444910979.aux_tac -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1444910979.aux_tac -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1444910979.aux_tac -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1444910979.aux_tac -/
 #print homology.congr /-
 /-- `homology f g w ≅ homology f' g' w'` if `f = f'` and `g = g'`.
 (Note the objects are not changing here.)
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 
 ! This file was ported from Lean 3 source module algebra.homology.image_to_kernel
-! leanprover-community/mathlib commit 618ea3d5c99240cd7000d8376924906a148bf9ff
+! leanprover-community/mathlib commit ce38d86c0b2d427ce208c3cee3159cb421d2b3c4
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -13,6 +13,9 @@ import Mathbin.CategoryTheory.Subobject.Limits
 /-!
 # Image-to-kernel comparison maps
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 Whenever `f : A ⟶ B` and `g : B ⟶ C` satisfy `w : f ≫ g = 0`,
 we have `image_le_kernel f g w : image_subobject f ≤ kernel_subobject g`
 (assuming the appropriate images and kernels exist).
@@ -522,10 +525,10 @@ private unsafe def aux_tac : tactic Unit :=
   sorry
 #align aux_tac aux_tac
 
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1451867403.aux_tac -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1451867403.aux_tac -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1451867403.aux_tac -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.1451867403.aux_tac -/
 #print homology.congr /-
 /-- `homology f g w ≅ homology f' g' w'` if `f = f'` and `g = g'`.
 (Note the objects are not changing here.)
Diff
@@ -39,16 +39,30 @@ section
 
 variable {A B C : V} (f : A ⟶ B) [HasImage f] (g : B ⟶ C) [HasKernel g]
 
+#print image_le_kernel /-
 theorem image_le_kernel (w : f ≫ g = 0) : imageSubobject f ≤ kernelSubobject g :=
   imageSubobject_le_mk _ _ (kernel.lift _ _ w) (by simp)
 #align image_le_kernel image_le_kernel
+-/
 
+/- warning: image_to_kernel -> imageToKernel is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g], (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) -> (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g], (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) -> (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)))
+Case conversion may be inaccurate. Consider using '#align image_to_kernel imageToKernelₓ'. -/
 /-- The canonical morphism `image_subobject f ⟶ kernel_subobject g` when `f ≫ g = 0`.
 -/
 def imageToKernel (w : f ≫ g = 0) : (imageSubobject f : V) ⟶ (kernelSubobject g : V) :=
   Subobject.ofLE _ _ (image_le_kernel _ _ w)deriving Mono
 #align image_to_kernel imageToKernel
 
+/- warning: subobject_of_le_as_image_to_kernel -> subobject_ofLE_as_imageToKernel is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (h : LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 B))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4) h) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (h : LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4) h) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)
+Case conversion may be inaccurate. Consider using '#align subobject_of_le_as_image_to_kernel subobject_ofLE_as_imageToKernelₓ'. -/
 /-- Prefer `image_to_kernel`. -/
 @[simp]
 theorem subobject_ofLE_as_imageToKernel (w : f ≫ g = 0) (h) :
@@ -56,12 +70,24 @@ theorem subobject_ofLE_as_imageToKernel (w : f ≫ g = 0) (h) :
   rfl
 #align subobject_of_le_as_image_to_kernel subobject_ofLE_as_imageToKernel
 
+/- warning: image_to_kernel_arrow -> imageToKernel_arrow is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) B) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) B (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) B) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) B (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3))
+Case conversion may be inaccurate. Consider using '#align image_to_kernel_arrow imageToKernel_arrowₓ'. -/
 @[simp, reassoc.1, elementwise]
 theorem imageToKernel_arrow (w : f ≫ g = 0) :
     imageToKernel f g w ≫ (kernelSubobject g).arrow = (imageSubobject f).arrow := by
   simp [imageToKernel]
 #align image_to_kernel_arrow imageToKernel_arrow
 
+/- warning: factor_thru_image_subobject_comp_image_to_kernel -> factorThruImageSubobject_comp_imageToKernel is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (CategoryTheory.Limits.factorThruImageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)) (CategoryTheory.Limits.factorThruKernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4 A f w)
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (CategoryTheory.Limits.factorThruImageSubobject.{u1, u2} V _inst_1 A B f _inst_3) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)) (CategoryTheory.Limits.factorThruKernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4 A f w)
+Case conversion may be inaccurate. Consider using '#align factor_thru_image_subobject_comp_image_to_kernel factorThruImageSubobject_comp_imageToKernelₓ'. -/
 -- This is less useful as a `simp` lemma than it initially appears,
 -- as it "loses" the information the morphism factors through the image.
 theorem factorThruImageSubobject_comp_imageToKernel (w : f ≫ g = 0) :
@@ -77,6 +103,12 @@ section
 
 variable {A B C : V} (f : A ⟶ B) (g : B ⟶ C)
 
+/- warning: image_to_kernel_zero_left -> imageToKernel_zero_left is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] {w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))}, Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))))))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] {w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))}, Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))))))
+Case conversion may be inaccurate. Consider using '#align image_to_kernel_zero_left imageToKernel_zero_leftₓ'. -/
 @[simp]
 theorem imageToKernel_zero_left [HasKernels V] [HasZeroObject V] {w} :
     imageToKernel (0 : A ⟶ B) g w = 0 := by
@@ -84,6 +116,12 @@ theorem imageToKernel_zero_left [HasKernels V] [HasZeroObject V] {w} :
   simp
 #align image_to_kernel_zero_left imageToKernel_zero_left
 
+/- warning: image_to_kernel_zero_right -> imageToKernel_zero_right is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))}, Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_3 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_3 A B f) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_3 A B f))) B ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))))) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_3 A B f))) (CategoryTheory.inv.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))))) B (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))))) (CategoryTheory.Limits.isIso_kernelSubobject_zero_arrow.{u1, u2} V _inst_1 B C _inst_2)))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))}, Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_3 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_3 A B f) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_3 A B f))) B (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))))) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_3 A B f))) (CategoryTheory.inv.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))))) B (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))))) (CategoryTheory.Limits.isIso_kernelSubobject_zero_arrow.{u1, u2} V _inst_1 B C _inst_2)))
+Case conversion may be inaccurate. Consider using '#align image_to_kernel_zero_right imageToKernel_zero_rightₓ'. -/
 theorem imageToKernel_zero_right [HasImages V] {w} :
     imageToKernel f (0 : B ⟶ C) w =
       (imageSubobject f).arrow ≫ inv (kernelSubobject (0 : B ⟶ C)).arrow :=
@@ -96,6 +134,12 @@ section
 
 variable [HasKernels V] [HasImages V]
 
+/- warning: image_to_kernel_comp_right -> imageToKernel_comp_right is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {D : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C D) (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B D f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) True (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) True) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) True ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) h) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))) (CategoryTheory.reassoc_of.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) w (forall {X' : V} (f' : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C X'), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B X' f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C X' g f')) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')) (fun {X' : V} (f' : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C X') => Eq.mp.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B X' f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C X' g f')) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')) ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X')) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B X' f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C X' g f')) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 A B C X' f g f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f') (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f'))) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f'))) (Eq.ndrec.{0, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (fun (_a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) => Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' _a f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f'))) (rfl.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) f') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f'))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) w)) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A X') (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C X' (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) f')))) D h) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A C D h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))))) (propext (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) True (eq_self_iff_true.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))))))) trivial)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h))) (CategoryTheory.Limits.kernelSubobject_comp_le.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) D h (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)))))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {D : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C D) (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B D f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (of_eq_true (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D)))) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D)))) True (congrFun.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) => Prop) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D)))) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D)) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) h) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D))) ((fun {Z : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C Z) => id.{0} (forall {Z : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C Z), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C Z g h)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C Z (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) h)) (Eq.mp.{0} (forall (a : V) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C a), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A a) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C a (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) a_1) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C a (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) a_1)) (forall (a : V) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C a), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A a) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B a f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C a g a_1)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C a (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) a_1)) (forall_congr.{succ u2} V (fun (a : V) => forall (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C a), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A a) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C a (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) a_1) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C a (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) a_1)) (fun (a : V) => forall (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C a), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A a) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B a f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C a g a_1)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C a (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) a_1)) (fun {Z : V} => forall_congr.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C Z) (fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C Z) => Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) a) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C Z (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) a)) (fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C Z) => Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C Z g a)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C Z (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) a)) (fun (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C Z) => congrFun.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) => Prop) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C Z g h))) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C Z g h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A Z)) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 A B C Z f g h)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C Z (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) h)))) (CategoryTheory.eq_whisker'.{u2, u1} V _inst_1 A C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) w)) Z h) D h) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A C D h))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D)))) (eq_self.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D))))))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h))) (CategoryTheory.Limits.kernelSubobject_comp_le.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) D h (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)))))
+Case conversion may be inaccurate. Consider using '#align image_to_kernel_comp_right imageToKernel_comp_rightₓ'. -/
 theorem imageToKernel_comp_right {D : V} (h : C ⟶ D) (w : f ≫ g = 0) :
     imageToKernel f (g ≫ h) (by simp [reassoc_of w]) =
       imageToKernel f g w ≫ Subobject.ofLE _ _ (kernelSubobject_comp_le g h) :=
@@ -104,6 +148,12 @@ theorem imageToKernel_comp_right {D : V} (h : C ⟶ D) (w : f ≫ g = 0) :
   simp
 #align image_to_kernel_comp_right imageToKernel_comp_right
 
+/- warning: image_to_kernel_comp_left -> imageToKernel_comp_left is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {Z : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) True (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) True) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) True ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 Z A B C h f g) ((fun (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) ᾰ ᾰ_1) (ᾰ_2 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (ᾰ_3 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ᾰ_2 ᾰ_3) => congr.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C ᾰ) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C ᾰ_1) ᾰ_2 ᾰ_3 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) -> (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C)) ᾰ ᾰ_1 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C) e_1) e_2) h h (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) w)) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 Z A h C)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))))) (propext (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) True (eq_self_iff_true.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))))))) trivial)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobject_comp_le.{u1, u2} V _inst_1 A B Z h f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {Z : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (of_eq_true (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) True (congrFun.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) => Prop) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C)) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C))) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 Z A B C h f g) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h) w)) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 Z A h C))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) (eq_self.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C))))))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobject_comp_le.{u1, u2} V _inst_1 A B Z h f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w))
+Case conversion may be inaccurate. Consider using '#align image_to_kernel_comp_left imageToKernel_comp_leftₓ'. -/
 theorem imageToKernel_comp_left {Z : V} (h : Z ⟶ A) (w : f ≫ g = 0) :
     imageToKernel (h ≫ f) g (by simp [w]) =
       Subobject.ofLE _ _ (imageSubobject_comp_le h f) ≫ imageToKernel f g w :=
@@ -112,6 +162,12 @@ theorem imageToKernel_comp_left {Z : V} (h : Z ⟶ A) (w : f ≫ g = 0) :
   simp
 #align image_to_kernel_comp_left imageToKernel_comp_left
 
+/- warning: image_to_kernel_comp_mono -> imageToKernel_comp_mono is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {D : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C D) [_inst_5 : CategoryTheory.Mono.{u1, u2} V _inst_1 C D h] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B D f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (Iff.mp (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (CategoryTheory.cancel_mono.{u1, u2} V _inst_1 C D A h _inst_5 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))))) ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 A B C D f g h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) h) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A C D h))) (Eq.mp.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D))))) (rfl.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A D)))))) w)))) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Subobject.isoOfEq.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobject_comp_mono.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) D h _inst_5))))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {D : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) C D) [_inst_5 : CategoryTheory.Mono.{u1, u2} V _inst_1 C D h] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B D f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (Iff.mp (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (CategoryTheory.cancel_mono.{u1, u2} V _inst_1 C D A h _inst_5 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D)))) (id.{0} (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D))))) (congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) h) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A D))) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A C D (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) h) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B D f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A D)) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 A B C D f g h)) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A C D h))) w))) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Subobject.isoOfEq.{u1, u2} V _inst_1 B (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B D _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B C D g h) (CategoryTheory.Limits.hasKernel_comp_mono.{u1, u2} V _inst_1 _inst_2 B C D g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) h _inst_5)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobject_comp_mono.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) D h _inst_5))))
+Case conversion may be inaccurate. Consider using '#align image_to_kernel_comp_mono imageToKernel_comp_monoₓ'. -/
 @[simp]
 theorem imageToKernel_comp_mono {D : V} (h : C ⟶ D) [Mono h] (w) :
     imageToKernel f (g ≫ h) w =
@@ -122,6 +178,12 @@ theorem imageToKernel_comp_mono {D : V} (h : C ⟶ D) [Mono h] (w) :
   simp
 #align image_to_kernel_comp_mono imageToKernel_comp_mono
 
+/- warning: image_to_kernel_epi_comp -> imageToKernel_epi_comp is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {Z : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) [_inst_5 : CategoryTheory.Epi.{u1, u2} V _inst_1 Z A h] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobject_comp_le.{u1, u2} V _inst_1 A B Z h f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (Iff.mp (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (CategoryTheory.cancel_epi.{u1, u2} V _inst_1 Z A C h _inst_5 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))))) ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 Z A h C))) (Eq.mp.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C))))) ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 Z A B C h f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 Z C)))))) w)))))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {Z : V} (h : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z A) [_inst_5 : CategoryTheory.Epi.{u1, u2} V _inst_1 Z A h] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 B (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobject_comp_le.{u1, u2} V _inst_1 A B Z h f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 Z B (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (Iff.mp (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (CategoryTheory.cancel_epi.{u1, u2} V _inst_1 Z A C h _inst_5 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) (id.{0} (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C))))) (congrArg.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) Prop (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g))) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 Z A h C))) (Eq.mp.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) (congrFun.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) => Prop) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g))) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A B h f) g) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z A C h (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C)) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 Z A B C h f g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) Z C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 Z C)))) w)))))
+Case conversion may be inaccurate. Consider using '#align image_to_kernel_epi_comp imageToKernel_epi_compₓ'. -/
 @[simp]
 theorem imageToKernel_epi_comp {Z : V} (h : Z ⟶ A) [Epi h] (w) :
     imageToKernel (h ≫ f) g w =
@@ -134,6 +196,12 @@ theorem imageToKernel_epi_comp {Z : V} (h : Z ⟶ A) [Epi h] (w) :
 
 end
 
+/- warning: image_to_kernel_comp_hom_inv_comp -> imageToKernel_comp_hom_inv_comp is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasEqualizers.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {Z : V} {i : CategoryTheory.Iso.{u1, u2} V _inst_1 B Z} (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 Z)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) _inst_3 (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 Z)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) _inst_3 (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 Z)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) _inst_3 (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 Z)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))) (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 Z)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) _inst_3 (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.imageSubobjectCompIso.{u1, u2} V _inst_1 A B _inst_3 f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 Z)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))) (rfl.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))))) (Eq.mp.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B Z C (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 A B Z C f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) ((fun (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) ᾰ ᾰ_1) (ᾰ_2 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (ᾰ_3 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) ᾰ_2 ᾰ_3) => congr.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C ᾰ) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C ᾰ_1) ᾰ_2 ᾰ_3 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) -> (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C)) ᾰ ᾰ_1 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C) e_1) e_2) f f (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) f) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B Z C (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) g (CategoryTheory.Iso.hom_inv_id_assoc.{u1, u2} V _inst_1 B Z i C g))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))) w))) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 Z)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g))) (CategoryTheory.Limits.kernelSubobjectIsoComp.{u1, u2} V _inst_1 B C _inst_2 Z (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasEqualizers.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] {Z : V} {i : CategoryTheory.Iso.{u1, u2} V _inst_1 B Z} (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 Z)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 Z)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)) w) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 Z)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 Z)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))) (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 Z)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A Z (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.Limits.hasImage_comp_iso.{u1, u2} V _inst_1 A B f Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.imageSubobjectCompIso.{u1, u2} V _inst_1 A B _inst_3 f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) Z (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.IsIso.of_iso.{u1, u2} V _inst_1 B Z i))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 Z)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g) (Eq.mp.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (congrFun.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) => Prop) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g)) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C)) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A Z C (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B Z f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B Z C (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (CategoryTheory.Category.assoc.{u1, u2} V _inst_1 A B Z C f (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) B Z C (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 B Z i) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g)) g (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f) (CategoryTheory.Iso.hom_inv_id_assoc.{u1, u2} V _inst_1 B Z i C g)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) w)) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 Z) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 Z))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 Z)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 Z C _inst_2 (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g) (CategoryTheory.Limits.hasKernel_iso_comp.{u1, u2} V _inst_1 _inst_2 Z B C (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g))) (CategoryTheory.Limits.kernelSubobjectIsoComp.{u1, u2} V _inst_1 B C _inst_2 Z (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 B Z i) (CategoryTheory.IsIso.of_iso_inv.{u1, u2} V _inst_1 B Z i) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) B C g)))))
+Case conversion may be inaccurate. Consider using '#align image_to_kernel_comp_hom_inv_comp imageToKernel_comp_hom_inv_compₓ'. -/
 @[simp]
 theorem imageToKernel_comp_hom_inv_comp [HasEqualizers V] [HasImages V] {Z : V} {i : B ≅ Z} (w) :
     imageToKernel (f ≫ i.Hom) (i.inv ≫ g) w =
@@ -146,6 +214,12 @@ theorem imageToKernel_comp_hom_inv_comp [HasEqualizers V] [HasImages V] {Z : V}
 
 open ZeroObject
 
+/- warning: image_to_kernel_epi_of_zero_of_mono -> imageToKernel_epi_of_zero_of_mono is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] [_inst_5 : CategoryTheory.Mono.{u1, u2} V _inst_1 B C g], CategoryTheory.Epi.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))) (propext (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True (eq_self_iff_true.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))))) trivial))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] [_inst_5 : CategoryTheory.Mono.{u1, u2} V _inst_1 B C g], CategoryTheory.Epi.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_4 A B) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) (of_eq_true (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) True (congrFun.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) => Prop) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) g)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C)) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C g)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (eq_self.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))))))
+Case conversion may be inaccurate. Consider using '#align image_to_kernel_epi_of_zero_of_mono imageToKernel_epi_of_zero_of_monoₓ'. -/
 /-- `image_to_kernel` for `A --0--> B --g--> C`, where `g` is a mono is itself an epi
 (i.e. the sequence is exact at `B`).
 -/
@@ -154,6 +228,12 @@ instance imageToKernel_epi_of_zero_of_mono [HasKernels V] [HasZeroObject V] [Mon
   epi_of_target_iso_zero _ (kernelSubobjectIso g ≪≫ kernel.ofMono g)
 #align image_to_kernel_epi_of_zero_of_mono imageToKernel_epi_of_zero_of_mono
 
+/- warning: image_to_kernel_epi_of_epi_of_zero -> imageToKernel_epi_of_epi_of_zero is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Epi.{u1, u2} V _inst_1 A B f], CategoryTheory.Epi.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_3 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_3 A B f) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True ((fun (a : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (a_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (e_1 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a a_1) (ᾰ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (ᾰ_1 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (e_2 : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ᾰ ᾰ_1) => congr.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) a_1) ᾰ ᾰ_1 (congr_arg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) -> Prop) a a_1 (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C))))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 A B f C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))) (propext (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) True (eq_self_iff_true.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C)))))))) trivial))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Epi.{u1, u2} V _inst_1 A B f], CategoryTheory.Epi.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_3 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_3 A B f) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (of_eq_true (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) True (congrFun.{succ u1, 1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) => Prop) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) ((Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) -> Prop) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C)) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 A B f C)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) (eq_self.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))))))
+Case conversion may be inaccurate. Consider using '#align image_to_kernel_epi_of_epi_of_zero imageToKernel_epi_of_epi_of_zeroₓ'. -/
 /-- `image_to_kernel` for `A --f--> B --0--> C`, where `g` is an epi is itself an epi
 (i.e. the sequence is exact at `B`).
 -/
@@ -172,6 +252,12 @@ section
 
 variable {A B C : V} (f : A ⟶ B) [HasImage f] (g : B ⟶ C) [HasKernel g]
 
+/- warning: homology -> homology is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_5 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_6 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) [_inst_7 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_5)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_6)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_5 g _inst_6 w)], V
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_5 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_6 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_7 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_5)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_6)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_5 g _inst_6 w)], V
+Case conversion may be inaccurate. Consider using '#align homology homologyₓ'. -/
 /-- The homology of a pair of morphisms `f : A ⟶ B` and `g : B ⟶ C` satisfying `f ≫ g = 0`
 is the cokernel of the `image_to_kernel` morphism for `f` and `g`.
 -/
@@ -184,16 +270,34 @@ section
 
 variable (w : f ≫ g = 0) [HasCokernel (imageToKernel f g w)]
 
+/- warning: homology.π -> homology.π is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)], Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)], Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)
+Case conversion may be inaccurate. Consider using '#align homology.π homology.πₓ'. -/
 /-- The morphism from cycles to homology. -/
 def homology.π : (kernelSubobject g : V) ⟶ homology f g w :=
   cokernel.π _
 #align homology.π homology.π
 
+/- warning: homology.condition -> homology.condition is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)], Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)))))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)], Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5)) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5))))
+Case conversion may be inaccurate. Consider using '#align homology.condition homology.conditionₓ'. -/
 @[simp]
 theorem homology.condition : imageToKernel f g w ≫ homology.π f g w = 0 :=
   cokernel.condition _
 #align homology.condition homology.condition
 
+/- warning: homology.desc -> homology.desc is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)] {D : V} (k : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) k) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D))))) -> (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D)
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)] {D : V} (k : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) k) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D)))) -> (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D)
+Case conversion may be inaccurate. Consider using '#align homology.desc homology.descₓ'. -/
 /-- To construct a map out of homology, it suffices to construct a map out of the cycles
 which vanishes on boundaries.
 -/
@@ -202,12 +306,24 @@ def homology.desc {D : V} (k : (kernelSubobject g : V) ⟶ D) (p : imageToKernel
   cokernel.desc _ k p
 #align homology.desc homology.desc
 
+/- warning: homology.π_desc -> homology.π_desc is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)] {D : V} (k : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D) (p : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) k) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) (homology.desc.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5 D k p)) k
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)] {D : V} (k : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D) (p : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w) k) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) D)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) (homology.desc.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5 D k p)) k
+Case conversion may be inaccurate. Consider using '#align homology.π_desc homology.π_descₓ'. -/
 @[simp, reassoc.1, elementwise]
 theorem homology.π_desc {D : V} (k : (kernelSubobject g : V) ⟶ D)
     (p : imageToKernel f g w ≫ k = 0) : homology.π f g w ≫ homology.desc f g w k p = k := by
   simp [homology.π, homology.desc]
 #align homology.π_desc homology.π_desc
 
+/- warning: homology.ext -> homology.ext is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)] {D : V} {k : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D} {k' : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D}, (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) k) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) k')) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D) k k')
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_5 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)] {D : V} {k : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D} {k' : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D}, (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) D) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) k) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D (homology.π.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) k')) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_5) D) k k')
+Case conversion may be inaccurate. Consider using '#align homology.ext homology.extₓ'. -/
 /-- To check two morphisms out of `homology f g w` are equal, it suffices to check on cycles. -/
 @[ext]
 theorem homology.ext {D : V} {k k' : homology f g w ⟶ D}
@@ -217,6 +333,12 @@ theorem homology.ext {D : V} {k k' : homology f g w ⟶ D}
   exact p
 #align homology.ext homology.ext
 
+/- warning: homology_of_zero_right -> homologyOfZeroRight is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] [_inst_6 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (homologyOfZeroRight._proof_1.{u2, u1} V _inst_1 _inst_2 B C))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (homologyOfZeroRight._proof_2.{u2, u1} V _inst_1 _inst_2 B C) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 A B f C))] [_inst_7 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 A B f] [_inst_8 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f _inst_3) B (CategoryTheory.Limits.image.ι.{u1, u2} V _inst_1 A B f _inst_3)] [_inst_9 : CategoryTheory.Epi.{u1, u2} V _inst_1 A (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.factorThruImage.{u1, u2} V _inst_1 A B f _inst_3)], CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (homologyOfZeroRight._proof_3.{u2, u1} V _inst_1 _inst_2 B C) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 A B f C) _inst_6) (CategoryTheory.Limits.cokernel.{u1, u2} V _inst_1 _inst_2 A B f _inst_7)
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] [_inst_6 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 A B f C))] [_inst_7 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 A B f] [_inst_8 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f _inst_3) B (CategoryTheory.Limits.image.ι.{u1, u2} V _inst_1 A B f _inst_3)] [_inst_9 : CategoryTheory.Epi.{u1, u2} V _inst_1 A (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.factorThruImage.{u1, u2} V _inst_1 A B f _inst_3)], CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.comp_zero.{u1, u2} V _inst_1 _inst_2 A B f C) _inst_6) (CategoryTheory.Limits.cokernel.{u1, u2} V _inst_1 _inst_2 A B f _inst_7)
+Case conversion may be inaccurate. Consider using '#align homology_of_zero_right homologyOfZeroRightₓ'. -/
 /-- The cokernel of the map `Im f ⟶ Ker 0` is isomorphic to the cokernel of `f.` -/
 def homologyOfZeroRight [HasCokernel (imageToKernel f (0 : B ⟶ C) comp_zero)] [HasCokernel f]
     [HasCokernel (image.ι f)] [Epi (factorThruImage f)] :
@@ -226,6 +348,12 @@ def homologyOfZeroRight [HasCokernel (imageToKernel f (0 : B ⟶ C) comp_zero)]
     (cokernelImageι _)
 #align homology_of_zero_right homologyOfZeroRight
 
+/- warning: homology_of_zero_left -> homologyOfZeroLeft is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] [_inst_6 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] [_inst_7 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_8 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B))))] [_inst_9 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) _inst_8)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) _inst_8 g _inst_4 (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C g))], CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) (CategoryTheory.Limits.hasImage_zero.{u1, u2} V _inst_1 _inst_2 _inst_6 A B) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_7 B C g) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C g) _inst_9) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g _inst_4)
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] [_inst_6 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] [_inst_7 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_8 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B)))] [_inst_9 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) _inst_8)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) _inst_8 g _inst_4 (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C g))], CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) _inst_8 g _inst_4 (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C g) _inst_9) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g _inst_4)
+Case conversion may be inaccurate. Consider using '#align homology_of_zero_left homologyOfZeroLeftₓ'. -/
 /-- The kernel of the map `Im 0 ⟶ Ker f` is isomorphic to the kernel of `f.` -/
 def homologyOfZeroLeft [HasZeroObject V] [HasKernels V] [HasImage (0 : A ⟶ B)]
     [HasCokernel (imageToKernel (0 : A ⟶ B) g zero_comp)] :
@@ -234,6 +362,12 @@ def homologyOfZeroLeft [HasZeroObject V] [HasKernels V] [HasImage (0 : A ⟶ B)]
     (kernelSubobjectIso _)
 #align homology_of_zero_left homologyOfZeroLeft
 
+/- warning: homology_zero_zero -> homologyZeroZero is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} [_inst_6 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] [_inst_7 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B))))] [_inst_8 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) _inst_7)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (homologyZeroZero._proof_1.{u2, u1} V _inst_1 _inst_2 B C))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) _inst_7 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (homologyZeroZero._proof_2.{u2, u1} V _inst_1 _inst_2 B C) (homologyZeroZero._proof_3.{u2, u1} V _inst_1 _inst_2 A B C))], CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A B)))) _inst_7 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 B C)))) (homologyZeroZero._proof_4.{u2, u1} V _inst_1 _inst_2 B C) (homologyZeroZero._proof_5.{u2, u1} V _inst_1 _inst_2 A B C) _inst_8) B
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} [_inst_6 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] [_inst_7 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B)))] [_inst_8 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) _inst_7)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) _inst_7 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))))], CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A B))) _inst_7 (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C))) (CategoryTheory.Limits.hasEqualizer_of_self.{u1, u2} V _inst_1 B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) (CategoryTheory.Limits.zero_comp.{u1, u2} V _inst_1 _inst_2 A B C (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 B C)))) _inst_8) B
+Case conversion may be inaccurate. Consider using '#align homology_zero_zero homologyZeroZeroₓ'. -/
 /-- `homology 0 0 _` is just the middle object. -/
 @[simps]
 def homologyZeroZero [HasZeroObject V] [HasImage (0 : A ⟶ B)]
@@ -257,6 +391,7 @@ variable {f g} (w : f ≫ g = 0) {A' B' C' : V} {f' : A' ⟶ B'} [HasImage f'] {
   (β₁ : Arrow.mk g₁ ⟶ Arrow.mk g₂) (α₂ : Arrow.mk f₂ ⟶ Arrow.mk f₃) [HasImageMap α₂]
   (β₂ : Arrow.mk g₂ ⟶ Arrow.mk g₃)
 
+#print imageSubobjectMap_comp_imageToKernel /-
 /-- Given compatible commutative squares between
 a pair `f g` and a pair `f' g'` satisfying `f ≫ g = 0` and `f' ≫ g' = 0`,
 the `image_to_kernel` morphisms intertwine the induced map on kernels and the induced map on images.
@@ -268,6 +403,7 @@ theorem imageSubobjectMap_comp_imageToKernel (p : α.right = β.left) :
   ext
   simp [p]
 #align image_subobject_map_comp_image_to_kernel imageSubobjectMap_comp_imageToKernel
+-/
 
 variable [HasCokernel (imageToKernel f g w)] [HasCokernel (imageToKernel f' g' w')]
 
@@ -277,6 +413,7 @@ variable [HasCokernel (imageToKernel f₂ g₂ w₂)]
 
 variable [HasCokernel (imageToKernel f₃ g₃ w₃)]
 
+#print homology.map /-
 /-- Given compatible commutative squares between
 a pair `f g` and a pair `f' g'` satisfying `f ≫ g = 0` and `f' ≫ g' = 0`,
 we get a morphism on homology.
@@ -287,13 +424,17 @@ def homology.map (p : α.right = β.left) : homology f g w ⟶ homology f' g' w'
       rw [imageSubobjectMap_comp_imageToKernel_assoc w w' α β p]
       simp only [cokernel.condition, comp_zero])
 #align homology.map homology.map
+-/
 
+#print homology.π_map /-
 @[simp, reassoc.1, elementwise]
 theorem homology.π_map (p : α.right = β.left) :
     homology.π f g w ≫ homology.map w w' α β p = kernelSubobjectMap β ≫ homology.π f' g' w' := by
   simp only [homology.π, homology.map, cokernel.π_desc]
 #align homology.π_map homology.π_map
+-/
 
+#print homology.map_desc /-
 @[simp, reassoc.1, elementwise]
 theorem homology.map_desc (p : α.right = β.left) {D : V} (k : (kernelSubobject g' : V) ⟶ D)
     (z : imageToKernel f' g' w' ≫ k = 0) :
@@ -302,12 +443,25 @@ theorem homology.map_desc (p : α.right = β.left) {D : V} (k : (kernelSubobject
         (by simp only [imageSubobjectMap_comp_imageToKernel_assoc w w' α β p, z, comp_zero]) :=
   by ext <;> simp only [homology.π_desc, homology.π_map_assoc]
 #align homology.map_desc homology.map_desc
+-/
 
+/- warning: homology.map_id -> homology.map_id is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} {f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B} [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] {g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C} [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))) [_inst_16 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)], Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_16) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_16)) (homology.map.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w A B C f _inst_3 g _inst_4 w (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f)) (CategoryTheory.Limits.hasImageMapOfIsIso.{u1, u2} V _inst_1 (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.Limits.Hom.hasImage.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.Hom.hasImage.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f)) (CategoryTheory.IsIso.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f))) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B C g)) _inst_16 _inst_16 (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f))) (CategoryTheory.CommaMorphism.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f))))) (CategoryTheory.CategoryStruct.id.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_16))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} {f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B} [_inst_3 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A B f] {g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C} [_inst_4 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B C g] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))) [_inst_16 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f _inst_3)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g _inst_4)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w)], Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_16) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_16)) (homology.map.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w A B C f _inst_3 g _inst_4 w (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f)) (CategoryTheory.Limits.hasImageMapOfIsIso.{u1, u2} V _inst_1 (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.Limits.instHasImageObjToQuiverToCategoryStructToPrefunctorIdLeftMkRightHom.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.Limits.instHasImageObjToQuiverToCategoryStructToPrefunctorIdLeftMkRightHom.{u1, u2} V _inst_1 A B f _inst_3) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f)) (CategoryTheory.IsIso.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f))) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B C g)) _inst_16 _inst_16 (rfl.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f))) (CategoryTheory.CommaMorphism.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A B f))))) (CategoryTheory.CategoryStruct.id.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (homology.{u1, u2} V _inst_1 _inst_2 A B C f _inst_3 g _inst_4 w _inst_16))
+Case conversion may be inaccurate. Consider using '#align homology.map_id homology.map_idₓ'. -/
 @[simp]
 theorem homology.map_id : homology.map w w (𝟙 _) (𝟙 _) rfl = 𝟙 _ := by
   ext <;> simp only [homology.π_map, kernel_subobject_map_id, category.id_comp, category.comp_id]
 #align homology.map_id homology.map_id
 
+/- warning: homology.comp_right_eq_comp_left -> homology.comp_right_eq_comp_left is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u1}} [_inst_21 : CategoryTheory.Category.{u2, u1} V] {A₁ : V} {B₁ : V} {C₁ : V} {A₂ : V} {B₂ : V} {C₂ : V} {A₃ : V} {B₃ : V} {C₃ : V} {f₁ : Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) A₁ B₁} {g₁ : Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) B₁ C₁} {f₂ : Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) A₂ B₂} {g₂ : Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) B₂ C₂} {f₃ : Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) A₃ B₃} {g₃ : Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) B₃ C₃} {α₁ : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Arrow.category.{u2, u1} V _inst_21))) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₂ B₂ f₂)} {β₁ : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Arrow.category.{u2, u1} V _inst_21))) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₂ C₂ g₂)} {α₂ : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Arrow.category.{u2, u1} V _inst_21))) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₂ B₂ f₂) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₃ B₃ f₃)} {β₂ : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Arrow.category.{u2, u1} V _inst_21))) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₂ C₂ g₂) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₃ C₃ g₃)}, (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) (CategoryTheory.Comma.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₁ B₁ f₁)) (CategoryTheory.Comma.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₂ B₂ f₂))) (CategoryTheory.CommaMorphism.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₂ B₂ f₂) α₁) (CategoryTheory.CommaMorphism.left.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₂ C₂ g₂) β₁)) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) (CategoryTheory.Comma.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₂ B₂ f₂)) (CategoryTheory.Comma.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₃ B₃ f₃))) (CategoryTheory.CommaMorphism.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₂ B₂ f₂) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₃ B₃ f₃) α₂) (CategoryTheory.CommaMorphism.left.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₂ C₂ g₂) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₃ C₃ g₃) β₂)) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} V (CategoryTheory.Category.toCategoryStruct.{u2, u1} V _inst_21)) (CategoryTheory.Comma.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₁ B₁ f₁)) (CategoryTheory.Comma.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₃ B₃ f₃))) (CategoryTheory.CommaMorphism.right.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₃ B₃ f₃) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Arrow.category.{u2, u1} V _inst_21)) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₂ B₂ f₂) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 A₃ B₃ f₃) α₁ α₂)) (CategoryTheory.CommaMorphism.left.{u2, u2, u2, u1, u1, u1} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Functor.id.{u2, u1} V _inst_21) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₃ C₃ g₃) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Arrow.{u2, u1} V _inst_21) (CategoryTheory.Arrow.category.{u2, u1} V _inst_21)) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₂ C₂ g₂) (CategoryTheory.Arrow.mk.{u2, u1} V _inst_21 B₃ C₃ g₃) β₁ β₂)))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_21 : CategoryTheory.Category.{u1, u2} V] {A₁ : V} {B₁ : V} {C₁ : V} {A₂ : V} {B₂ : V} {C₂ : V} {A₃ : V} {B₃ : V} {C₃ : V} {f₁ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) A₁ B₁} {g₁ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) B₁ C₁} {f₂ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) A₂ B₂} {g₂ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) B₂ C₂} {f₃ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) A₃ B₃} {g₃ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) B₃ C₃} {α₁ : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_21))) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₂ B₂ f₂)} {β₁ : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_21))) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₂ C₂ g₂)} {α₂ : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_21))) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₂ B₂ f₂) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₃ B₃ f₃)} {β₂ : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_21))) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₂ C₂ g₂) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₃ C₃ g₃)}, (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₁ B₁ f₁)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₂ B₂ f₂))) (CategoryTheory.CommaMorphism.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₂ B₂ f₂) α₁) (CategoryTheory.CommaMorphism.left.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₂ C₂ g₂) β₁)) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₂ B₂ f₂)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₃ B₃ f₃))) (CategoryTheory.CommaMorphism.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₂ B₂ f₂) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₃ B₃ f₃) α₂) (CategoryTheory.CommaMorphism.left.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₂ C₂ g₂) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₃ C₃ g₃) β₂)) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_21)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₁ B₁ f₁)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₃ B₃ f₃))) (CategoryTheory.CommaMorphism.right.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₃ B₃ f₃) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_21)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₂ B₂ f₂) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 A₃ B₃ f₃) α₁ α₂)) (CategoryTheory.CommaMorphism.left.{u1, u1, u1, u2, u2, u2} V _inst_21 V _inst_21 V _inst_21 (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Functor.id.{u1, u2} V _inst_21) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₃ C₃ g₃) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_21) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_21)) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₂ C₂ g₂) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_21 B₃ C₃ g₃) β₁ β₂)))
+Case conversion may be inaccurate. Consider using '#align homology.comp_right_eq_comp_left homology.comp_right_eq_comp_leftₓ'. -/
 /-- Auxiliary lemma for homology computations. -/
 theorem homology.comp_right_eq_comp_left {V : Type _} [Category V] {A₁ B₁ C₁ A₂ B₂ C₂ A₃ B₃ C₃ : V}
     {f₁ : A₁ ⟶ B₁} {g₁ : B₁ ⟶ C₁} {f₂ : A₂ ⟶ B₂} {g₂ : B₂ ⟶ C₂} {f₃ : A₃ ⟶ B₃} {g₃ : B₃ ⟶ C₃}
@@ -317,6 +471,7 @@ theorem homology.comp_right_eq_comp_left {V : Type _} [Category V] {A₁ B₁ C
   simp only [comma.comp_left, comma.comp_right, p₁, p₂]
 #align homology.comp_right_eq_comp_left homology.comp_right_eq_comp_left
 
+#print homology.map_comp /-
 @[reassoc.1]
 theorem homology.map_comp (p₁ : α₁.right = β₁.left) (p₂ : α₂.right = β₂.left) :
     homology.map w₁ w₂ α₁ β₁ p₁ ≫ homology.map w₂ w₃ α₂ β₂ p₂ =
@@ -325,7 +480,14 @@ theorem homology.map_comp (p₁ : α₁.right = β₁.left) (p₂ : α₂.right
   ext <;>
     simp only [kernel_subobject_map_comp, homology.π_map_assoc, homology.π_map, category.assoc]
 #align homology.map_comp homology.map_comp
+-/
 
+/- warning: homology.map_iso -> homology.mapIso is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A₁ : V} {B₁ : V} {C₁ : V} {f₁ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ B₁} [_inst_8 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A₁ B₁ f₁] {g₁ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B₁ C₁} [_inst_9 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B₁ C₁ g₁] (w₁ : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ C₁) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A₁ B₁ C₁ f₁ g₁) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ C₁) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ C₁) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ C₁) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A₁ C₁))))) {A₂ : V} {B₂ : V} {C₂ : V} {f₂ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ B₂} [_inst_10 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A₂ B₂ f₂] {g₂ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B₂ C₂} [_inst_11 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B₂ C₂ g₂] (w₂ : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ C₂) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A₂ B₂ C₂ f₂ g₂) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ C₂) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ C₂) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ C₂) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A₂ C₂))))) [_inst_18 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B₁)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A₁ B₁ f₁ _inst_8)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B₁)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B₁ C₁ _inst_2 g₁ _inst_9)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A₁ B₁ C₁ f₁ _inst_8 g₁ _inst_9 w₁)] [_inst_19 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B₂)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A₂ B₂ f₂ _inst_10)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B₂)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B₂ C₂ _inst_2 g₂ _inst_11)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A₂ B₂ C₂ f₂ _inst_10 g₂ _inst_11 w₂)] (α : CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂)) (β : CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₂ C₂ g₂)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂))) (CategoryTheory.CommaMorphism.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂) (CategoryTheory.Iso.hom.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂) α)) (CategoryTheory.CommaMorphism.left.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₂ C₂ g₂) (CategoryTheory.Iso.hom.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.category.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₂ C₂ g₂) β))) -> (CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A₁ B₁ C₁ f₁ _inst_8 g₁ _inst_9 w₁ _inst_18) (homology.{u1, u2} V _inst_1 _inst_2 A₂ B₂ C₂ f₂ _inst_10 g₂ _inst_11 w₂ _inst_19))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A₁ : V} {B₁ : V} {C₁ : V} {f₁ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ B₁} [_inst_8 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A₁ B₁ f₁] {g₁ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B₁ C₁} [_inst_9 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B₁ C₁ g₁] (w₁ : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ C₁) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A₁ B₁ C₁ f₁ g₁) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ C₁) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₁ C₁) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A₁ C₁)))) {A₂ : V} {B₂ : V} {C₂ : V} {f₂ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ B₂} [_inst_10 : CategoryTheory.Limits.HasImage.{u1, u2} V _inst_1 A₂ B₂ f₂] {g₂ : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B₂ C₂} [_inst_11 : CategoryTheory.Limits.HasKernel.{u1, u2} V _inst_1 _inst_2 B₂ C₂ g₂] (w₂ : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ C₂) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A₂ B₂ C₂ f₂ g₂) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ C₂) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A₂ C₂) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A₂ C₂)))) [_inst_18 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₁))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₁))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B₁)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A₁ B₁ f₁ _inst_8)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₁))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₁) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₁))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B₁)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B₁ C₁ _inst_2 g₁ _inst_9)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A₁ B₁ C₁ f₁ _inst_8 g₁ _inst_9 w₁)] [_inst_19 : CategoryTheory.Limits.HasCokernel.{u1, u2} V _inst_1 _inst_2 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₂))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₂))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B₂)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A₂ B₂ f₂ _inst_10)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₂))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B₂) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B₂))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B₂)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B₂ C₂ _inst_2 g₂ _inst_11)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A₂ B₂ C₂ f₂ _inst_10 g₂ _inst_11 w₂)] (α : CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂)) (β : CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₂ C₂ g₂)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁)) (CategoryTheory.Comma.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂))) (CategoryTheory.CommaMorphism.right.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂) (CategoryTheory.Iso.hom.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₁ B₁ f₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 A₂ B₂ f₂) α)) (CategoryTheory.CommaMorphism.left.{u1, u1, u1, u2, u2, u2} V _inst_1 V _inst_1 V _inst_1 (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Functor.id.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₂ C₂ g₂) (CategoryTheory.Iso.hom.{u1, max u2 u1} (CategoryTheory.Arrow.{u1, u2} V _inst_1) (CategoryTheory.instCategoryArrow.{u1, u2} V _inst_1) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₁ C₁ g₁) (CategoryTheory.Arrow.mk.{u1, u2} V _inst_1 B₂ C₂ g₂) β))) -> (CategoryTheory.Iso.{u1, u2} V _inst_1 (homology.{u1, u2} V _inst_1 _inst_2 A₁ B₁ C₁ f₁ _inst_8 g₁ _inst_9 w₁ _inst_18) (homology.{u1, u2} V _inst_1 _inst_2 A₂ B₂ C₂ f₂ _inst_10 g₂ _inst_11 w₂ _inst_19))
+Case conversion may be inaccurate. Consider using '#align homology.map_iso homology.mapIsoₓ'. -/
 /-- An isomorphism between two three-term complexes induces an isomorphism on homology. -/
 def homology.mapIso (α : Arrow.mk f₁ ≅ Arrow.mk f₂) (β : Arrow.mk g₁ ≅ Arrow.mk g₂)
     (p : α.Hom.right = β.Hom.left) : homology f₁ g₁ w₁ ≅ homology f₂ g₂ w₂
@@ -364,6 +526,7 @@ private unsafe def aux_tac : tactic Unit :=
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
+#print homology.congr /-
 /-- `homology f g w ≅ homology f' g' w'` if `f = f'` and `g = g'`.
 (Note the objects are not changing here.)
 -/
@@ -395,6 +558,7 @@ def homology.congr (pf : f = f') (pg : g = g') : homology f g w ≅ homology f'
     cases pf; cases pg; rw [homology.map_comp, ← homology.map_id]
     congr 1 <;> exact category.comp_id _
 #align homology.congr homology.congr
+-/
 
 end
 
@@ -408,6 +572,7 @@ section imageToKernel'
 
 variable {A B C : V} (f : A ⟶ B) (g : B ⟶ C) (w : f ≫ g = 0) [HasKernels V] [HasImages V]
 
+#print imageToKernel' /-
 /-- While `image_to_kernel f g w` provides a morphism
 `image_subobject f ⟶ kernel_subobject g`
 in terms of the subobject API,
@@ -421,7 +586,14 @@ def imageToKernel' (w : f ≫ g = 0) : image f ⟶ kernel g :=
       ext
       simpa using w)
 #align image_to_kernel' imageToKernel'
+-/
 
+/- warning: image_subobject_iso_image_to_kernel' -> imageSubobjectIso_imageToKernel' is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobjectIso.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) (imageToKernel'.{u1, u2} V _inst_1 _inst_2 A B C f g _inst_3 _inst_4 w)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobjectIso.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobjectIso.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (imageToKernel'.{u1, u2} V _inst_1 _inst_2 A B C f g _inst_3 _inst_4 w)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w) (CategoryTheory.Iso.hom.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobjectIso.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))))
+Case conversion may be inaccurate. Consider using '#align image_subobject_iso_image_to_kernel' imageSubobjectIso_imageToKernel'ₓ'. -/
 @[simp]
 theorem imageSubobjectIso_imageToKernel' (w : f ≫ g = 0) :
     (imageSubobjectIso f).Hom ≫ imageToKernel' f g w =
@@ -431,6 +603,12 @@ theorem imageSubobjectIso_imageToKernel' (w : f ≫ g = 0) :
   simp [imageToKernel']
 #align image_subobject_iso_image_to_kernel' imageSubobjectIso_imageToKernel'
 
+/- warning: image_to_kernel'_kernel_subobject_iso -> imageToKernel'_kernelSubobjectIso is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} V _inst_1 _inst_2 A C))))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (imageToKernel'.{u1, u2} V _inst_1 _inst_2 A B C f g _inst_3 _inst_4 w) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobjectIso.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 B)))) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobjectIso.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w))
+but is expected to have type
+  forall {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {A : V} {B : V} {C : V} (f : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A B) (g : Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) B C) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (w : Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) A B C f g) (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) 0 (Zero.toOfNat0.{u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) A C) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u1, u2} V _inst_1 _inst_2 A C)))), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (imageToKernel'.{u1, u2} V _inst_1 _inst_2 A B C f g _inst_3 _inst_4 w) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 B C g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)) (CategoryTheory.Limits.kernelSubobjectIso.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g)))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 B C _inst_2 g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g))) (CategoryTheory.Iso.inv.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 B) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 B))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 B)) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f)) (CategoryTheory.Limits.imageSubobjectIso.{u1, u2} V _inst_1 A B f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f))) (imageToKernel.{u1, u2} V _inst_1 _inst_2 A B C f (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_4 A B f) g (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 B C g) w))
+Case conversion may be inaccurate. Consider using '#align image_to_kernel'_kernel_subobject_iso imageToKernel'_kernelSubobjectIsoₓ'. -/
 @[simp]
 theorem imageToKernel'_kernelSubobjectIso (w : f ≫ g = 0) :
     imageToKernel' f g w ≫ (kernelSubobjectIso g).inv =
@@ -442,6 +620,7 @@ theorem imageToKernel'_kernelSubobjectIso (w : f ≫ g = 0) :
 
 variable [HasCokernels V]
 
+#print homologyIsoCokernelImageToKernel' /-
 /-- `homology f g w` can be computed as the cokernel of `image_to_kernel' f g w`.
 -/
 def homologyIsoCokernelImageToKernel' (w : f ≫ g = 0) :
@@ -463,9 +642,11 @@ def homologyIsoCokernelImageToKernel' (w : f ≫ g = 0) :
     simp only [iso.inv_hom_id_assoc, cokernel.π_desc, category.comp_id, cokernel.π_desc_assoc,
       category.assoc]
 #align homology_iso_cokernel_image_to_kernel' homologyIsoCokernelImageToKernel'
+-/
 
 variable [HasEqualizers V]
 
+#print homologyIsoCokernelLift /-
 /-- `homology f g w` can be computed as the cokernel of `kernel.lift g f w`.
 -/
 def homologyIsoCokernelLift (w : f ≫ g = 0) : homology f g w ≅ cokernel (kernel.lift g f w) :=
@@ -477,6 +658,7 @@ def homologyIsoCokernelLift (w : f ≫ g = 0) : homology f g w ≅ cokernel (ker
     simp [imageToKernel']
   exact (cokernel_epi_comp _ _).symm ≪≫ cokernel_iso_of_eq p
 #align homology_iso_cokernel_lift homologyIsoCokernelLift
+-/
 
 end imageToKernel'
 
Diff
@@ -46,15 +46,15 @@ theorem image_le_kernel (w : f ≫ g = 0) : imageSubobject f ≤ kernelSubobject
 /-- The canonical morphism `image_subobject f ⟶ kernel_subobject g` when `f ≫ g = 0`.
 -/
 def imageToKernel (w : f ≫ g = 0) : (imageSubobject f : V) ⟶ (kernelSubobject g : V) :=
-  Subobject.ofLe _ _ (image_le_kernel _ _ w)deriving Mono
+  Subobject.ofLE _ _ (image_le_kernel _ _ w)deriving Mono
 #align image_to_kernel imageToKernel
 
 /-- Prefer `image_to_kernel`. -/
 @[simp]
-theorem subobject_ofLe_as_imageToKernel (w : f ≫ g = 0) (h) :
-    Subobject.ofLe (imageSubobject f) (kernelSubobject g) h = imageToKernel f g w :=
+theorem subobject_ofLE_as_imageToKernel (w : f ≫ g = 0) (h) :
+    Subobject.ofLE (imageSubobject f) (kernelSubobject g) h = imageToKernel f g w :=
   rfl
-#align subobject_of_le_as_image_to_kernel subobject_ofLe_as_imageToKernel
+#align subobject_of_le_as_image_to_kernel subobject_ofLE_as_imageToKernel
 
 @[simp, reassoc.1, elementwise]
 theorem imageToKernel_arrow (w : f ≫ g = 0) :
@@ -98,7 +98,7 @@ variable [HasKernels V] [HasImages V]
 
 theorem imageToKernel_comp_right {D : V} (h : C ⟶ D) (w : f ≫ g = 0) :
     imageToKernel f (g ≫ h) (by simp [reassoc_of w]) =
-      imageToKernel f g w ≫ Subobject.ofLe _ _ (kernelSubobject_comp_le g h) :=
+      imageToKernel f g w ≫ Subobject.ofLE _ _ (kernelSubobject_comp_le g h) :=
   by
   ext
   simp
@@ -106,7 +106,7 @@ theorem imageToKernel_comp_right {D : V} (h : C ⟶ D) (w : f ≫ g = 0) :
 
 theorem imageToKernel_comp_left {Z : V} (h : Z ⟶ A) (w : f ≫ g = 0) :
     imageToKernel (h ≫ f) g (by simp [w]) =
-      Subobject.ofLe _ _ (imageSubobject_comp_le h f) ≫ imageToKernel f g w :=
+      Subobject.ofLE _ _ (imageSubobject_comp_le h f) ≫ imageToKernel f g w :=
   by
   ext
   simp
@@ -125,7 +125,7 @@ theorem imageToKernel_comp_mono {D : V} (h : C ⟶ D) [Mono h] (w) :
 @[simp]
 theorem imageToKernel_epi_comp {Z : V} (h : Z ⟶ A) [Epi h] (w) :
     imageToKernel (h ≫ f) g w =
-      Subobject.ofLe _ _ (imageSubobject_comp_le h f) ≫
+      Subobject.ofLE _ _ (imageSubobject_comp_le h f) ≫
         imageToKernel f g ((cancel_epi h).mp (by simpa using w : h ≫ f ≫ g = h ≫ 0)) :=
   by
   ext
Diff
@@ -354,16 +354,16 @@ section
 variable {A B C : V} {f : A ⟶ B} {g : B ⟶ C} (w : f ≫ g = 0) {f' : A ⟶ B} {g' : B ⟶ C}
   (w' : f' ≫ g' = 0) [HasKernels V] [HasCokernels V] [HasImages V] [HasImageMaps V]
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:334:4: warning: unsupported (TODO): `[tacs] -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:330:4: warning: unsupported (TODO): `[tacs] -/
 /-- Custom tactic to golf and speedup boring proofs in `homology.congr`. -/
 private unsafe def aux_tac : tactic Unit :=
   sorry
 #align aux_tac aux_tac
 
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:72:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:72:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:72:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:72:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic _private.601314589.aux_tac -/
 /-- `homology f g w ≅ homology f' g' w'` if `f = f'` and `g = g'`.
 (Note the objects are not changing here.)
 -/

Changes in mathlib4

mathlib3
mathlib4
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)

      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()

      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -29,7 +29,6 @@ universe v u w
 open CategoryTheory CategoryTheory.Limits
 
 variable {ι : Type*}
-
 variable {V : Type u} [Category.{v} V] [HasZeroMorphisms V]
 
 open scoped Classical
chore: remove more autoImplicit (#11336)

... or reduce its scope (the full removal is not as obvious).

Diff
@@ -24,10 +24,7 @@ renamed `homology'`. It is planned that this definition shall be removed and rep
 
 -/
 
-set_option autoImplicit true
-
-
-universe v u
+universe v u w
 
 open CategoryTheory CategoryTheory.Limits
 
chore: scope open Classical (#11199)

We remove all but one open Classicals, instead preferring to use open scoped Classical. The only real side-effect this led to is moving a couple declarations to use Exists.choose instead of Classical.choose.

The first few commits are explicitly labelled regex replaces for ease of review.

Diff
@@ -35,7 +35,7 @@ variable {ι : Type*}
 
 variable {V : Type u} [Category.{v} V] [HasZeroMorphisms V]
 
-open Classical
+open scoped Classical
 
 noncomputable section
 
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -66,7 +66,7 @@ theorem subobject_ofLE_as_imageToKernel (w : f ≫ g = 0) (h) :
 
 attribute [local instance] ConcreteCategory.instFunLike
 
--- porting note: removed elementwise attribute which does not seem to be helpful here
+-- Porting note: removed elementwise attribute which does not seem to be helpful here
 -- a more suitable lemma is added below
 @[reassoc (attr := simp)]
 theorem imageToKernel_arrow (w : f ≫ g = 0) :
@@ -213,7 +213,7 @@ def homology'.desc {D : V} (k : (kernelSubobject g : V) ⟶ D) (p : imageToKerne
   cokernel.desc _ k p
 #align homology.desc homology'.desc
 
--- porting note: removed elementwise attribute which does not seem to be helpful here
+-- Porting note: removed elementwise attribute which does not seem to be helpful here
 @[reassoc (attr := simp)]
 theorem homology'.π_desc {D : V} (k : (kernelSubobject g : V) ⟶ D)
     (p : imageToKernel f g w ≫ k = 0) : homology'.π f g w ≫ homology'.desc f g w k p = k := by
@@ -292,7 +292,7 @@ def homology'.map (p : α.right = β.left) : homology' f g w ⟶ homology' f' g'
     simp only [cokernel.condition, comp_zero]
 #align homology.map homology'.map
 
--- porting note: removed elementwise attribute which does not seem to be helpful here,
+-- Porting note: removed elementwise attribute which does not seem to be helpful here,
 -- the correct lemma is stated below
 @[reassoc (attr := simp)]
 theorem homology'.π_map (p : α.right = β.left) :
@@ -374,7 +374,7 @@ section
 variable {A B C : V} {f : A ⟶ B} {g : B ⟶ C} (w : f ≫ g = 0) {f' : A ⟶ B} {g' : B ⟶ C}
   (w' : f' ≫ g' = 0) [HasKernels V] [HasCokernels V] [HasImages V] [HasImageMaps V]
 
--- porting note: removed the private auxiliary tactic which becomes unnecessary
+-- Porting note: removed the private auxiliary tactic which becomes unnecessary
 --/-- Custom tactic to golf and speedup boring proofs in `homology.congr`. -/
 --private unsafe def aux_tac : tactic Unit :=
 --  sorry
chore: remove terminal, terminal refines (#10762)

I replaced a few "terminal" refine/refine's with exact.

The strategy was very simple-minded: essentially any refine whose following line had smaller indentation got replaced by exact and then I cleaned up the mess.

This PR certainly leaves some further terminal refines, but maybe the current change is beneficial.

Diff
@@ -174,7 +174,7 @@ instance imageToKernel_epi_of_epi_of_zero [HasImages V] [Epi f] :
   simp only [imageToKernel_zero_right]
   haveI := epi_image_of_epi f
   rw [← imageSubobject_arrow]
-  refine' @epi_comp _ _ _ _ _ _ (epi_comp _ _) _ _
+  exact @epi_comp _ _ _ _ _ _ (epi_comp _ _) _ _
 #align image_to_kernel_epi_of_epi_of_zero imageToKernel_epi_of_epi_of_zero
 
 end
refactor(*): abbreviation for non-dependent FunLike (#9833)

This follows up from #9785, which renamed FunLike to DFunLike, by introducing a new abbreviation FunLike F α β := DFunLike F α (fun _ => β), to make the non-dependent use of FunLike easier.

I searched for the pattern DFunLike.*fun and DFunLike.*λ in all files to replace expressions of the form DFunLike F α (fun _ => β) with FunLike F α β. I did this everywhere except for extends clauses for two reasons: it would conflict with #8386, and more importantly extends must directly refer to a structure with no unfolding of defs or abbrevs.

Diff
@@ -64,7 +64,7 @@ theorem subobject_ofLE_as_imageToKernel (w : f ≫ g = 0) (h) :
   rfl
 #align subobject_of_le_as_image_to_kernel subobject_ofLE_as_imageToKernel
 
-attribute [local instance] ConcreteCategory.instDFunLike
+attribute [local instance] ConcreteCategory.instFunLike
 
 -- porting note: removed elementwise attribute which does not seem to be helpful here
 -- a more suitable lemma is added below
@@ -303,7 +303,7 @@ theorem homology'.π_map (p : α.right = β.left) :
 
 section
 
-attribute [local instance] ConcreteCategory.instDFunLike
+attribute [local instance] ConcreteCategory.instFunLike
 
 @[simp]
 lemma homology'.π_map_apply [ConcreteCategory.{w} V] (p : α.right = β.left)
chore(*): rename FunLike to DFunLike (#9785)

This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.

This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:

sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean     
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean

Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -64,7 +64,7 @@ theorem subobject_ofLE_as_imageToKernel (w : f ≫ g = 0) (h) :
   rfl
 #align subobject_of_le_as_image_to_kernel subobject_ofLE_as_imageToKernel
 
-attribute [local instance] ConcreteCategory.funLike
+attribute [local instance] ConcreteCategory.instDFunLike
 
 -- porting note: removed elementwise attribute which does not seem to be helpful here
 -- a more suitable lemma is added below
@@ -303,7 +303,7 @@ theorem homology'.π_map (p : α.right = β.left) :
 
 section
 
-attribute [local instance] ConcreteCategory.funLike
+attribute [local instance] ConcreteCategory.instDFunLike
 
 @[simp]
 lemma homology'.π_map_apply [ConcreteCategory.{w} V] (p : α.right = β.left)
refactor: introduce the new homology API for homological complex and rename the old one (#7954)

This PR renames definitions of the current homology API (adding a ' to homology, cycles, QuasiIso) so as to create space for the development of the new homology API of homological complexes: this PR also contains the new definition of HomologicalComplex.homology which involves the homology theory of short complexes.

Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com>

Diff
@@ -16,7 +16,12 @@ we have `image_le_kernel f g w : imageSubobject f ≤ kernelSubobject g`
 
 `imageToKernel f g w` is the corresponding morphism between objects in `C`.
 
-We define `homology f g w` of such a pair as the cokernel of `imageToKernel f g w`.
+We define `homology' f g w` of such a pair as the cokernel of `imageToKernel f g w`.
+
+Note: As part of the transition to the new homology API, `homology` is temporarily
+renamed `homology'`. It is planned that this definition shall be removed and replaced by
+`ShortComplex.homology`.
+
 -/
 
 set_option autoImplicit true
@@ -181,72 +186,72 @@ variable {A B C : V} (f : A ⟶ B) [HasImage f] (g : B ⟶ C) [HasKernel g]
 /-- The homology of a pair of morphisms `f : A ⟶ B` and `g : B ⟶ C` satisfying `f ≫ g = 0`
 is the cokernel of the `imageToKernel` morphism for `f` and `g`.
 -/
-def homology {A B C : V} (f : A ⟶ B) [HasImage f] (g : B ⟶ C) [HasKernel g] (w : f ≫ g = 0)
+def homology' {A B C : V} (f : A ⟶ B) [HasImage f] (g : B ⟶ C) [HasKernel g] (w : f ≫ g = 0)
     [HasCokernel (imageToKernel f g w)] : V :=
   cokernel (imageToKernel f g w)
-#align homology homology
+#align homology homology'
 
 section
 
 variable (w : f ≫ g = 0) [HasCokernel (imageToKernel f g w)]
 
 /-- The morphism from cycles to homology. -/
-def homology.π : (kernelSubobject g : V) ⟶ homology f g w :=
+def homology'.π : (kernelSubobject g : V) ⟶ homology' f g w :=
   cokernel.π _
-#align homology.π homology.π
+#align homology.π homology'.π
 
 @[simp]
-theorem homology.condition : imageToKernel f g w ≫ homology.π f g w = 0 :=
+theorem homology'.condition : imageToKernel f g w ≫ homology'.π f g w = 0 :=
   cokernel.condition _
-#align homology.condition homology.condition
+#align homology.condition homology'.condition
 
 /-- To construct a map out of homology, it suffices to construct a map out of the cycles
 which vanishes on boundaries.
 -/
-def homology.desc {D : V} (k : (kernelSubobject g : V) ⟶ D) (p : imageToKernel f g w ≫ k = 0) :
-    homology f g w ⟶ D :=
+def homology'.desc {D : V} (k : (kernelSubobject g : V) ⟶ D) (p : imageToKernel f g w ≫ k = 0) :
+    homology' f g w ⟶ D :=
   cokernel.desc _ k p
-#align homology.desc homology.desc
+#align homology.desc homology'.desc
 
 -- porting note: removed elementwise attribute which does not seem to be helpful here
 @[reassoc (attr := simp)]
-theorem homology.π_desc {D : V} (k : (kernelSubobject g : V) ⟶ D)
-    (p : imageToKernel f g w ≫ k = 0) : homology.π f g w ≫ homology.desc f g w k p = k := by
-  simp [homology.π, homology.desc]
-#align homology.π_desc homology.π_desc
+theorem homology'.π_desc {D : V} (k : (kernelSubobject g : V) ⟶ D)
+    (p : imageToKernel f g w ≫ k = 0) : homology'.π f g w ≫ homology'.desc f g w k p = k := by
+  simp [homology'.π, homology'.desc]
+#align homology.π_desc homology'.π_desc
 
-/-- To check two morphisms out of `homology f g w` are equal, it suffices to check on cycles. -/
+/-- To check two morphisms out of `homology' f g w` are equal, it suffices to check on cycles. -/
 @[ext]
-theorem homology.ext {D : V} {k k' : homology f g w ⟶ D}
-    (p : homology.π f g w ≫ k = homology.π f g w ≫ k') : k = k' :=
+theorem homology'.ext {D : V} {k k' : homology' f g w ⟶ D}
+    (p : homology'.π f g w ≫ k = homology'.π f g w ≫ k') : k = k' :=
   coequalizer.hom_ext p
-#align homology.ext homology.ext
+#align homology.ext homology'.ext
 
 /-- The cokernel of the map `Im f ⟶ Ker 0` is isomorphic to the cokernel of `f.` -/
-def homologyOfZeroRight [HasCokernel (imageToKernel f (0 : B ⟶ C) comp_zero)] [HasCokernel f]
+def homology'OfZeroRight [HasCokernel (imageToKernel f (0 : B ⟶ C) comp_zero)] [HasCokernel f]
     [HasCokernel (image.ι f)] [Epi (factorThruImage f)] :
-    homology f (0 : B ⟶ C) comp_zero ≅ cokernel f :=
+    homology' f (0 : B ⟶ C) comp_zero ≅ cokernel f :=
   (cokernel.mapIso _ _ (imageSubobjectIso _) ((kernelSubobjectIso 0).trans kernelZeroIsoSource)
         (by simp)).trans
     (cokernelImageι _)
-#align homology_of_zero_right homologyOfZeroRight
+#align homology_of_zero_right homology'OfZeroRight
 
 /-- The kernel of the map `Im 0 ⟶ Ker f` is isomorphic to the kernel of `f.` -/
-def homologyOfZeroLeft [HasZeroObject V] [HasKernels V] [HasImage (0 : A ⟶ B)]
+def homology'OfZeroLeft [HasZeroObject V] [HasKernels V] [HasImage (0 : A ⟶ B)]
     [HasCokernel (imageToKernel (0 : A ⟶ B) g zero_comp)] :
-    homology (0 : A ⟶ B) g zero_comp ≅ kernel g :=
+    homology' (0 : A ⟶ B) g zero_comp ≅ kernel g :=
   ((cokernelIsoOfEq <| imageToKernel_zero_left _).trans cokernelZeroIsoTarget).trans
     (kernelSubobjectIso _)
-#align homology_of_zero_left homologyOfZeroLeft
+#align homology_of_zero_left homology'OfZeroLeft
 
 /-- `homology 0 0 _` is just the middle object. -/
 @[simps]
-def homologyZeroZero [HasZeroObject V] [HasImage (0 : A ⟶ B)]
+def homology'ZeroZero [HasZeroObject V] [HasImage (0 : A ⟶ B)]
     [HasCokernel (imageToKernel (0 : A ⟶ B) (0 : B ⟶ C) zero_comp)] :
-    homology (0 : A ⟶ B) (0 : B ⟶ C) zero_comp ≅ B where
-  hom := homology.desc (0 : A ⟶ B) (0 : B ⟶ C) zero_comp (kernelSubobject 0).arrow (by simp)
-  inv := inv (kernelSubobject 0).arrow ≫ homology.π _ _ _
-#align homology_zero_zero homologyZeroZero
+    homology' (0 : A ⟶ B) (0 : B ⟶ C) zero_comp ≅ B where
+  hom := homology'.desc (0 : A ⟶ B) (0 : B ⟶ C) zero_comp (kernelSubobject 0).arrow (by simp)
+  inv := inv (kernelSubobject 0).arrow ≫ homology'.π _ _ _
+#align homology_zero_zero homology'ZeroZero
 
 end
 
@@ -281,83 +286,84 @@ variable [HasCokernel (imageToKernel f₃ g₃ w₃)]
 a pair `f g` and a pair `f' g'` satisfying `f ≫ g = 0` and `f' ≫ g' = 0`,
 we get a morphism on homology.
 -/
-def homology.map (p : α.right = β.left) : homology f g w ⟶ homology f' g' w' :=
+def homology'.map (p : α.right = β.left) : homology' f g w ⟶ homology' f' g' w' :=
   cokernel.desc _ (kernelSubobjectMap β ≫ cokernel.π _) <| by
     rw [imageSubobjectMap_comp_imageToKernel_assoc w w' α β p]
     simp only [cokernel.condition, comp_zero]
-#align homology.map homology.map
+#align homology.map homology'.map
 
 -- porting note: removed elementwise attribute which does not seem to be helpful here,
 -- the correct lemma is stated below
 @[reassoc (attr := simp)]
-theorem homology.π_map (p : α.right = β.left) :
-    homology.π f g w ≫ homology.map w w' α β p = kernelSubobjectMap β ≫ homology.π f' g' w' := by
-  simp only [homology.π, homology.map, cokernel.π_desc]
-#align homology.π_map homology.π_map
+theorem homology'.π_map (p : α.right = β.left) :
+    homology'.π f g w ≫ homology'.map w w' α β p =
+      kernelSubobjectMap β ≫ homology'.π f' g' w' := by
+  simp only [homology'.π, homology'.map, cokernel.π_desc]
+#align homology.π_map homology'.π_map
 
 section
 
 attribute [local instance] ConcreteCategory.funLike
 
 @[simp]
-lemma homology.π_map_apply [ConcreteCategory.{w} V] (p : α.right = β.left)
+lemma homology'.π_map_apply [ConcreteCategory.{w} V] (p : α.right = β.left)
     (x : (forget V).obj (Subobject.underlying.obj (kernelSubobject g))) :
-    homology.map w w' α β p (homology.π f g w x) =
-      homology.π f' g' w' (kernelSubobjectMap β x) := by
-  simp only [← comp_apply, homology.π_map w w' α β p]
+    homology'.map w w' α β p (homology'.π f g w x) =
+      homology'.π f' g' w' (kernelSubobjectMap β x) := by
+  simp only [← comp_apply, homology'.π_map w w' α β p]
 
 end
 
 @[reassoc (attr := simp), elementwise (attr := simp)]
-theorem homology.map_desc (p : α.right = β.left) {D : V} (k : (kernelSubobject g' : V) ⟶ D)
+theorem homology'.map_desc (p : α.right = β.left) {D : V} (k : (kernelSubobject g' : V) ⟶ D)
     (z : imageToKernel f' g' w' ≫ k = 0) :
-    homology.map w w' α β p ≫ homology.desc f' g' w' k z =
-      homology.desc f g w (kernelSubobjectMap β ≫ k)
+    homology'.map w w' α β p ≫ homology'.desc f' g' w' k z =
+      homology'.desc f g w (kernelSubobjectMap β ≫ k)
         (by simp only [imageSubobjectMap_comp_imageToKernel_assoc w w' α β p, z, comp_zero]) := by
   ext
-  simp only [homology.π_desc, homology.π_map_assoc]
-#align homology.map_desc homology.map_desc
+  simp only [homology'.π_desc, homology'.π_map_assoc]
+#align homology.map_desc homology'.map_desc
 
 @[simp]
-theorem homology.map_id : homology.map w w (𝟙 _) (𝟙 _) rfl = 𝟙 _ := by
+theorem homology'.map_id : homology'.map w w (𝟙 _) (𝟙 _) rfl = 𝟙 _ := by
   ext
-  simp only [homology.π_map, kernelSubobjectMap_id, Category.id_comp, Category.comp_id]
-#align homology.map_id homology.map_id
+  simp only [homology'.π_map, kernelSubobjectMap_id, Category.id_comp, Category.comp_id]
+#align homology.map_id homology'.map_id
 
 /-- Auxiliary lemma for homology computations. -/
-theorem homology.comp_right_eq_comp_left {V : Type*} [Category V] {A₁ B₁ C₁ A₂ B₂ C₂ A₃ B₃ C₃ : V}
+theorem homology'.comp_right_eq_comp_left {V : Type*} [Category V] {A₁ B₁ C₁ A₂ B₂ C₂ A₃ B₃ C₃ : V}
     {f₁ : A₁ ⟶ B₁} {g₁ : B₁ ⟶ C₁} {f₂ : A₂ ⟶ B₂} {g₂ : B₂ ⟶ C₂} {f₃ : A₃ ⟶ B₃} {g₃ : B₃ ⟶ C₃}
     {α₁ : Arrow.mk f₁ ⟶ Arrow.mk f₂} {β₁ : Arrow.mk g₁ ⟶ Arrow.mk g₂}
     {α₂ : Arrow.mk f₂ ⟶ Arrow.mk f₃} {β₂ : Arrow.mk g₂ ⟶ Arrow.mk g₃} (p₁ : α₁.right = β₁.left)
     (p₂ : α₂.right = β₂.left) : (α₁ ≫ α₂).right = (β₁ ≫ β₂).left := by
   simp only [Arrow.comp_left, Arrow.comp_right, p₁, p₂]
-#align homology.comp_right_eq_comp_left homology.comp_right_eq_comp_left
+#align homology.comp_right_eq_comp_left homology'.comp_right_eq_comp_left
 
 @[reassoc]
-theorem homology.map_comp (p₁ : α₁.right = β₁.left) (p₂ : α₂.right = β₂.left) :
-    homology.map w₁ w₂ α₁ β₁ p₁ ≫ homology.map w₂ w₃ α₂ β₂ p₂ =
-      homology.map w₁ w₃ (α₁ ≫ α₂) (β₁ ≫ β₂) (homology.comp_right_eq_comp_left p₁ p₂) := by
+theorem homology'.map_comp (p₁ : α₁.right = β₁.left) (p₂ : α₂.right = β₂.left) :
+    homology'.map w₁ w₂ α₁ β₁ p₁ ≫ homology'.map w₂ w₃ α₂ β₂ p₂ =
+      homology'.map w₁ w₃ (α₁ ≫ α₂) (β₁ ≫ β₂) (homology'.comp_right_eq_comp_left p₁ p₂) := by
   ext
-  simp only [kernelSubobjectMap_comp, homology.π_map_assoc, homology.π_map, Category.assoc]
-#align homology.map_comp homology.map_comp
+  simp only [kernelSubobjectMap_comp, homology'.π_map_assoc, homology'.π_map, Category.assoc]
+#align homology.map_comp homology'.map_comp
 
 /-- An isomorphism between two three-term complexes induces an isomorphism on homology. -/
-def homology.mapIso (α : Arrow.mk f₁ ≅ Arrow.mk f₂) (β : Arrow.mk g₁ ≅ Arrow.mk g₂)
-    (p : α.hom.right = β.hom.left) : homology f₁ g₁ w₁ ≅ homology f₂ g₂ w₂ where
-  hom := homology.map w₁ w₂ α.hom β.hom p
+def homology'.mapIso (α : Arrow.mk f₁ ≅ Arrow.mk f₂) (β : Arrow.mk g₁ ≅ Arrow.mk g₂)
+    (p : α.hom.right = β.hom.left) : homology' f₁ g₁ w₁ ≅ homology' f₂ g₂ w₂ where
+  hom := homology'.map w₁ w₂ α.hom β.hom p
   inv :=
-    homology.map w₂ w₁ α.inv β.inv
+    homology'.map w₂ w₁ α.inv β.inv
       (by
         rw [← cancel_mono α.hom.right, ← Comma.comp_right, α.inv_hom_id, Comma.id_right, p, ←
           Comma.comp_left, β.inv_hom_id, Comma.id_left]
         rfl)
   hom_inv_id := by
-    rw [homology.map_comp, ← homology.map_id]
+    rw [homology'.map_comp, ← homology'.map_id]
     congr <;> simp only [Iso.hom_inv_id]
   inv_hom_id := by
-    rw [homology.map_comp, ← homology.map_id]
+    rw [homology'.map_comp, ← homology'.map_id]
     congr <;> simp only [Iso.inv_hom_id]
-#align homology.map_iso homology.mapIso
+#align homology.map_iso homology'.mapIso
 
 end
 
@@ -377,20 +383,20 @@ variable {A B C : V} {f : A ⟶ B} {g : B ⟶ C} (w : f ≫ g = 0) {f' : A ⟶ B
 (Note the objects are not changing here.)
 -/
 @[simps]
-def homology.congr (pf : f = f') (pg : g = g') : homology f g w ≅ homology f' g' w' where
-  hom := homology.map w w' ⟨𝟙 _, 𝟙 _, by aesop_cat⟩ ⟨𝟙 _, 𝟙 _, by aesop_cat⟩ rfl
-  inv := homology.map w' w ⟨𝟙 _, 𝟙 _, by aesop_cat⟩ ⟨𝟙 _, 𝟙 _, by aesop_cat⟩ rfl
+def homology'.congr (pf : f = f') (pg : g = g') : homology' f g w ≅ homology' f' g' w' where
+  hom := homology'.map w w' ⟨𝟙 _, 𝟙 _, by aesop_cat⟩ ⟨𝟙 _, 𝟙 _, by aesop_cat⟩ rfl
+  inv := homology'.map w' w ⟨𝟙 _, 𝟙 _, by aesop_cat⟩ ⟨𝟙 _, 𝟙 _, by aesop_cat⟩ rfl
   hom_inv_id := by
     obtain rfl := pf
     obtain rfl := pg
-    rw [homology.map_comp, ← homology.map_id]
+    rw [homology'.map_comp, ← homology'.map_id]
     congr <;> aesop_cat
   inv_hom_id := by
     obtain rfl := pf
     obtain rfl := pg
-    rw [homology.map_comp, ← homology.map_id]
+    rw [homology'.map_comp, ← homology'.map_id]
     congr <;> aesop_cat
-#align homology.congr homology.congr
+#align homology.congr homology'.congr
 
 end
 
@@ -435,17 +441,17 @@ theorem imageToKernel'_kernelSubobjectIso (w : f ≫ g = 0) :
 
 variable [HasCokernels V]
 
-/-- `homology f g w` can be computed as the cokernel of `imageToKernel' f g w`.
+/-- `homology' f g w` can be computed as the cokernel of `imageToKernel' f g w`.
 -/
-def homologyIsoCokernelImageToKernel' (w : f ≫ g = 0) :
-    homology f g w ≅ cokernel (imageToKernel' f g w) where
+def homology'IsoCokernelImageToKernel' (w : f ≫ g = 0) :
+    homology' f g w ≅ cokernel (imageToKernel' f g w) where
   hom := cokernel.map _ _ (imageSubobjectIso f).hom (kernelSubobjectIso g).hom
       (by simp only [imageSubobjectIso_imageToKernel'])
   inv := cokernel.map _ _ (imageSubobjectIso f).inv (kernelSubobjectIso g).inv
       (by simp only [imageToKernel'_kernelSubobjectIso])
   hom_inv_id := by
-    -- Just calling `ext` here uses the higher priority `homology.ext`,
-    -- which precomposes with `homology.π`.
+    -- Just calling `ext` here uses the higher priority `homology'.ext`,
+    -- which precomposes with `homology'.π`.
     -- As we are trying to work in terms of `cokernel`, it is better to use `coequalizer.hom_ext`.
     apply coequalizer.hom_ext
     simp only [Iso.hom_inv_id_assoc, cokernel.π_desc, cokernel.π_desc_assoc, Category.assoc,
@@ -455,18 +461,18 @@ def homologyIsoCokernelImageToKernel' (w : f ≫ g = 0) :
     ext
     simp only [Iso.inv_hom_id_assoc, cokernel.π_desc, Category.comp_id, cokernel.π_desc_assoc,
       Category.assoc]
-#align homology_iso_cokernel_image_to_kernel' homologyIsoCokernelImageToKernel'
+#align homology_iso_cokernel_image_to_kernel' homology'IsoCokernelImageToKernel'
 
 variable [HasEqualizers V]
 
 /-- `homology f g w` can be computed as the cokernel of `kernel.lift g f w`.
 -/
-def homologyIsoCokernelLift (w : f ≫ g = 0) : homology f g w ≅ cokernel (kernel.lift g f w) := by
-  refine' homologyIsoCokernelImageToKernel' f g w ≪≫ _
+def homology'IsoCokernelLift (w : f ≫ g = 0) : homology' f g w ≅ cokernel (kernel.lift g f w) := by
+  refine' homology'IsoCokernelImageToKernel' f g w ≪≫ _
   have p : factorThruImage f ≫ imageToKernel' f g w = kernel.lift g f w := by
     ext
     simp [imageToKernel']
   exact (cokernelEpiComp _ _).symm ≪≫ cokernelIsoOfEq p
-#align homology_iso_cokernel_lift homologyIsoCokernelLift
+#align homology_iso_cokernel_lift homology'IsoCokernelLift
 
 end imageToKernel'
fix: disable autoImplicit globally (#6528)

Autoimplicits are highly controversial and also defeat the performance-improving work in #6474.

The intent of this PR is to make autoImplicit opt-in on a per-file basis, by disabling it in the lakefile and enabling it again with set_option autoImplicit true in the few files that rely on it.

That also keeps this PR small, as opposed to attempting to "fix" files to not need it any more.

I claim that many of the uses of autoImplicit in these files are accidental; situations such as:

  • Assuming variables are in scope, but pasting the lemma in the wrong section
  • Pasting in a lemma from a scratch file without checking to see if the variable names are consistent with the rest of the file
  • Making a copy-paste error between lemmas and forgetting to add an explicit arguments.

Having set_option autoImplicit false as the default prevents these types of mistake being made in the 90% of files where autoImplicits are not used at all, and causes them to be caught by CI during review.

I think there were various points during the port where we encouraged porters to delete the universes u v lines; I think having autoparams for universe variables only would cover a lot of the cases we actually use them, while avoiding any real shortcomings.

A Zulip poll (after combining overlapping votes accordingly) was in favor of this change with 5:5:18 as the no:dontcare:yes vote ratio.

While this PR was being reviewed, a handful of files gained some more likely-accidental autoImplicits. In these places, set_option autoImplicit true has been placed locally within a section, rather than at the top of the file.

Diff
@@ -19,6 +19,8 @@ we have `image_le_kernel f g w : imageSubobject f ≤ kernelSubobject g`
 We define `homology f g w` of such a pair as the cokernel of `imageToKernel f g w`.
 -/
 
+set_option autoImplicit true
+
 
 universe v u
 
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -24,7 +24,7 @@ universe v u
 
 open CategoryTheory CategoryTheory.Limits
 
-variable {ι : Type _}
+variable {ι : Type*}
 
 variable {V : Type u} [Category.{v} V] [HasZeroMorphisms V]
 
@@ -323,7 +323,7 @@ theorem homology.map_id : homology.map w w (𝟙 _) (𝟙 _) rfl = 𝟙 _ := by
 #align homology.map_id homology.map_id
 
 /-- Auxiliary lemma for homology computations. -/
-theorem homology.comp_right_eq_comp_left {V : Type _} [Category V] {A₁ B₁ C₁ A₂ B₂ C₂ A₃ B₃ C₃ : V}
+theorem homology.comp_right_eq_comp_left {V : Type*} [Category V] {A₁ B₁ C₁ A₂ B₂ C₂ A₃ B₃ C₃ : V}
     {f₁ : A₁ ⟶ B₁} {g₁ : B₁ ⟶ C₁} {f₂ : A₂ ⟶ B₂} {g₂ : B₂ ⟶ C₂} {f₃ : A₃ ⟶ B₃} {g₃ : B₃ ⟶ C₃}
     {α₁ : Arrow.mk f₁ ⟶ Arrow.mk f₂} {β₁ : Arrow.mk g₁ ⟶ Arrow.mk g₂}
     {α₂ : Arrow.mk f₂ ⟶ Arrow.mk f₃} {β₂ : Arrow.mk g₂ ⟶ Arrow.mk g₃} (p₁ : α₁.right = β₁.left)
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2021 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module algebra.homology.image_to_kernel
-! leanprover-community/mathlib commit 618ea3d5c99240cd7000d8376924906a148bf9ff
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.Subobject.Limits
 
+#align_import algebra.homology.image_to_kernel from "leanprover-community/mathlib"@"618ea3d5c99240cd7000d8376924906a148bf9ff"
+
 /-!
 # Image-to-kernel comparison maps
 
feat: more consistent use of ext, and updating porting notes. (#5242)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>

Diff
@@ -274,11 +274,8 @@ theorem imageSubobjectMap_comp_imageToKernel (p : α.right = β.left) :
 #align image_subobject_map_comp_image_to_kernel imageSubobjectMap_comp_imageToKernel
 
 variable [HasCokernel (imageToKernel f g w)] [HasCokernel (imageToKernel f' g' w')]
-
 variable [HasCokernel (imageToKernel f₁ g₁ w₁)]
-
 variable [HasCokernel (imageToKernel f₂ g₂ w₂)]
-
 variable [HasCokernel (imageToKernel f₃ g₃ w₃)]
 
 /-- Given compatible commutative squares between
@@ -286,10 +283,9 @@ a pair `f g` and a pair `f' g'` satisfying `f ≫ g = 0` and `f' ≫ g' = 0`,
 we get a morphism on homology.
 -/
 def homology.map (p : α.right = β.left) : homology f g w ⟶ homology f' g' w' :=
-  cokernel.desc _ (kernelSubobjectMap β ≫ cokernel.π _)
-    (by
-      rw [imageSubobjectMap_comp_imageToKernel_assoc w w' α β p]
-      simp only [cokernel.condition, comp_zero])
+  cokernel.desc _ (kernelSubobjectMap β ≫ cokernel.π _) <| by
+    rw [imageSubobjectMap_comp_imageToKernel_assoc w w' α β p]
+    simp only [cokernel.condition, comp_zero]
 #align homology.map homology.map
 
 -- porting note: removed elementwise attribute which does not seem to be helpful here,
@@ -318,13 +314,15 @@ theorem homology.map_desc (p : α.right = β.left) {D : V} (k : (kernelSubobject
     (z : imageToKernel f' g' w' ≫ k = 0) :
     homology.map w w' α β p ≫ homology.desc f' g' w' k z =
       homology.desc f g w (kernelSubobjectMap β ≫ k)
-        (by simp only [imageSubobjectMap_comp_imageToKernel_assoc w w' α β p, z, comp_zero]) :=
-  by ext ; simp only [homology.π_desc, homology.π_map_assoc]
+        (by simp only [imageSubobjectMap_comp_imageToKernel_assoc w w' α β p, z, comp_zero]) := by
+  ext
+  simp only [homology.π_desc, homology.π_map_assoc]
 #align homology.map_desc homology.map_desc
 
 @[simp]
 theorem homology.map_id : homology.map w w (𝟙 _) (𝟙 _) rfl = 𝟙 _ := by
-  ext ; simp only [homology.π_map, kernelSubobjectMap_id, Category.id_comp, Category.comp_id]
+  ext
+  simp only [homology.π_map, kernelSubobjectMap_id, Category.id_comp, Category.comp_id]
 #align homology.map_id homology.map_id
 
 /-- Auxiliary lemma for homology computations. -/
@@ -340,7 +338,8 @@ theorem homology.comp_right_eq_comp_left {V : Type _} [Category V] {A₁ B₁ C
 theorem homology.map_comp (p₁ : α₁.right = β₁.left) (p₂ : α₂.right = β₂.left) :
     homology.map w₁ w₂ α₁ β₁ p₁ ≫ homology.map w₂ w₃ α₂ β₂ p₂ =
       homology.map w₁ w₃ (α₁ ≫ α₂) (β₁ ≫ β₂) (homology.comp_right_eq_comp_left p₁ p₂) := by
-  ext ; simp only [kernelSubobjectMap_comp, homology.π_map_assoc, homology.π_map, Category.assoc]
+  ext
+  simp only [kernelSubobjectMap_comp, homology.π_map_assoc, homology.π_map, Category.assoc]
 #align homology.map_comp homology.map_comp
 
 /-- An isomorphism between two three-term complexes induces an isomorphism on homology. -/
@@ -414,17 +413,16 @@ this variant provides a morphism
 which is sometimes more convenient.
 -/
 def imageToKernel' (w : f ≫ g = 0) : image f ⟶ kernel g :=
-  kernel.lift g (image.ι f)
-    (by
-      ext
-      simpa using w)
+  kernel.lift g (image.ι f) <| by
+    ext
+    simpa using w
 #align image_to_kernel' imageToKernel'
 
 @[simp]
 theorem imageSubobjectIso_imageToKernel' (w : f ≫ g = 0) :
     (imageSubobjectIso f).hom ≫ imageToKernel' f g w =
       imageToKernel f g w ≫ (kernelSubobjectIso g).hom := by
-  apply equalizer.hom_ext
+  ext
   simp [imageToKernel']
 #align image_subobject_iso_image_to_kernel' imageSubobjectIso_imageToKernel'
 
@@ -447,12 +445,15 @@ def homologyIsoCokernelImageToKernel' (w : f ≫ g = 0) :
   inv := cokernel.map _ _ (imageSubobjectIso f).inv (kernelSubobjectIso g).inv
       (by simp only [imageToKernel'_kernelSubobjectIso])
   hom_inv_id := by
+    -- Just calling `ext` here uses the higher priority `homology.ext`,
+    -- which precomposes with `homology.π`.
+    -- As we are trying to work in terms of `cokernel`, it is better to use `coequalizer.hom_ext`.
     apply coequalizer.hom_ext
     simp only [Iso.hom_inv_id_assoc, cokernel.π_desc, cokernel.π_desc_assoc, Category.assoc,
       coequalizer_as_cokernel]
     exact (Category.comp_id _).symm
   inv_hom_id := by
-    apply coequalizer.hom_ext
+    ext
     simp only [Iso.inv_hom_id_assoc, cokernel.π_desc, Category.comp_id, cokernel.π_desc_assoc,
       Category.assoc]
 #align homology_iso_cokernel_image_to_kernel' homologyIsoCokernelImageToKernel'
@@ -464,7 +465,7 @@ variable [HasEqualizers V]
 def homologyIsoCokernelLift (w : f ≫ g = 0) : homology f g w ≅ cokernel (kernel.lift g f w) := by
   refine' homologyIsoCokernelImageToKernel' f g w ≪≫ _
   have p : factorThruImage f ≫ imageToKernel' f g w = kernel.lift g f w := by
-    apply equalizer.hom_ext
+    ext
     simp [imageToKernel']
   exact (cokernelEpiComp _ _).symm ≪≫ cokernelIsoOfEq p
 #align homology_iso_cokernel_lift homologyIsoCokernelLift
feat: port Algebra.Homology.Module (#5000)

Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com>

Diff
@@ -60,13 +60,23 @@ theorem subobject_ofLE_as_imageToKernel (w : f ≫ g = 0) (h) :
   rfl
 #align subobject_of_le_as_image_to_kernel subobject_ofLE_as_imageToKernel
 
+attribute [local instance] ConcreteCategory.funLike
+
 -- porting note: removed elementwise attribute which does not seem to be helpful here
+-- a more suitable lemma is added below
 @[reassoc (attr := simp)]
 theorem imageToKernel_arrow (w : f ≫ g = 0) :
     imageToKernel f g w ≫ (kernelSubobject g).arrow = (imageSubobject f).arrow := by
   simp [imageToKernel]
 #align image_to_kernel_arrow imageToKernel_arrow
 
+@[simp]
+lemma imageToKernel_arrow_apply [ConcreteCategory V] (w : f ≫ g = 0)
+    (x : (forget V).obj (Subobject.underlying.obj (imageSubobject f))) :
+    (kernelSubobject g).arrow (imageToKernel f g w x) =
+      (imageSubobject f).arrow x := by
+  rw [← comp_apply, imageToKernel_arrow]
+
 -- This is less useful as a `simp` lemma than it initially appears,
 -- as it "loses" the information the morphism factors through the image.
 theorem factorThruImageSubobject_comp_imageToKernel (w : f ≫ g = 0) :
@@ -282,13 +292,27 @@ def homology.map (p : α.right = β.left) : homology f g w ⟶ homology f' g' w'
       simp only [cokernel.condition, comp_zero])
 #align homology.map homology.map
 
--- porting note: removed elementwise attribute which does not seem to be helpful here
+-- porting note: removed elementwise attribute which does not seem to be helpful here,
+-- the correct lemma is stated below
 @[reassoc (attr := simp)]
 theorem homology.π_map (p : α.right = β.left) :
     homology.π f g w ≫ homology.map w w' α β p = kernelSubobjectMap β ≫ homology.π f' g' w' := by
   simp only [homology.π, homology.map, cokernel.π_desc]
 #align homology.π_map homology.π_map
 
+section
+
+attribute [local instance] ConcreteCategory.funLike
+
+@[simp]
+lemma homology.π_map_apply [ConcreteCategory.{w} V] (p : α.right = β.left)
+    (x : (forget V).obj (Subobject.underlying.obj (kernelSubobject g))) :
+    homology.map w w' α β p (homology.π f g w x) =
+      homology.π f' g' w' (kernelSubobjectMap β x) := by
+  simp only [← comp_apply, homology.π_map w w' α β p]
+
+end
+
 @[reassoc (attr := simp), elementwise (attr := simp)]
 theorem homology.map_desc (p : α.right = β.left) {D : V} (k : (kernelSubobject g' : V) ⟶ D)
     (z : imageToKernel f' g' w' ≫ k = 0) :
feat: port Algebra.Homology.ImageToKernel (#3459)

Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com>

Dependencies 3 + 289

290 files ported (99.0%)
116821 lines ported (99.1%)
Show graph

The unported dependencies are