category_theory.limits.shapes.wide_pullbacksMathlib.CategoryTheory.Limits.Shapes.WidePullbacks

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2020 Bhavik Mehta. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Bhavik Mehta, Jakob von Raumer
 -/
-import Mathbin.CategoryTheory.Limits.HasLimits
-import Mathbin.CategoryTheory.Thin
+import CategoryTheory.Limits.HasLimits
+import CategoryTheory.Thin
 
 #align_import category_theory.limits.shapes.wide_pullbacks from "leanprover-community/mathlib"@"832f7b9162039c28b9361289c8681f155cae758f"
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2020 Bhavik Mehta. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Bhavik Mehta, Jakob von Raumer
-
-! This file was ported from Lean 3 source module category_theory.limits.shapes.wide_pullbacks
-! leanprover-community/mathlib commit 832f7b9162039c28b9361289c8681f155cae758f
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.CategoryTheory.Limits.HasLimits
 import Mathbin.CategoryTheory.Thin
 
+#align_import category_theory.limits.shapes.wide_pullbacks from "leanprover-community/mathlib"@"832f7b9162039c28b9361289c8681f155cae758f"
+
 /-!
 # Wide pullbacks
 
Diff
@@ -133,12 +133,15 @@ def wideCospan (B : C) (objs : J → C) (arrows : ∀ j : J, objs j ⟶ B) : Wid
 #align category_theory.limits.wide_pullback_shape.wide_cospan CategoryTheory.Limits.WidePullbackShape.wideCospan
 -/
 
+#print CategoryTheory.Limits.WidePullbackShape.diagramIsoWideCospan /-
 /-- Every diagram is naturally isomorphic (actually, equal) to a `wide_cospan` -/
 def diagramIsoWideCospan (F : WidePullbackShape J ⥤ C) :
     F ≅ wideCospan (F.obj none) (fun j => F.obj (some j)) fun j => F.map (Hom.term j) :=
   (NatIso.ofComponents fun j => eqToIso <| by tidy) <| by tidy
 #align category_theory.limits.wide_pullback_shape.diagram_iso_wide_cospan CategoryTheory.Limits.WidePullbackShape.diagramIsoWideCospan
+-/
 
+#print CategoryTheory.Limits.WidePullbackShape.mkCone /-
 /-- Construct a cone over a wide cospan. -/
 @[simps]
 def mkCone {F : WidePullbackShape J ⥤ C} {X : C} (f : X ⟶ F.obj none) (π : ∀ j, X ⟶ F.obj (some j))
@@ -152,7 +155,9 @@ def mkCone {F : WidePullbackShape J ⥤ C} {X : C} (f : X ⟶ F.obj none) (π :
         naturality' := fun j j' f => by
           cases j <;> cases j' <;> cases f <;> unfold_aux <;> dsimp <;> simp [w] } }
 #align category_theory.limits.wide_pullback_shape.mk_cone CategoryTheory.Limits.WidePullbackShape.mkCone
+-/
 
+#print CategoryTheory.Limits.WidePullbackShape.equivalenceOfEquiv /-
 /-- Wide pullback diagrams of equivalent index types are equivlent. -/
 def equivalenceOfEquiv (J' : Type w') (h : J ≃ J') : WidePullbackShape J ≌ WidePullbackShape J'
     where
@@ -165,13 +170,16 @@ def equivalenceOfEquiv (J' : Type w') (h : J ≃ J') : WidePullbackShape J ≌ W
     NatIso.ofComponents (fun j => by cases j <;> simp) fun j k f => by
       simp only [eq_iff_true_of_subsingleton]
 #align category_theory.limits.wide_pullback_shape.equivalence_of_equiv CategoryTheory.Limits.WidePullbackShape.equivalenceOfEquiv
+-/
 
+#print CategoryTheory.Limits.WidePullbackShape.uliftEquivalence /-
 /-- Lifting universe and morphism levels preserves wide pullback diagrams. -/
 def uliftEquivalence :
     ULiftHom.{w'} (ULift.{w'} (WidePullbackShape J)) ≌ WidePullbackShape (ULift J) :=
   (ULiftHomULiftCategory.equiv.{w', w', w, w} (WidePullbackShape J)).symm.trans
     (equivalenceOfEquiv _ (Equiv.ulift.{w', w}.symm : J ≃ ULift.{w'} J))
 #align category_theory.limits.wide_pullback_shape.ulift_equivalence CategoryTheory.Limits.WidePullbackShape.uliftEquivalence
+-/
 
 end WidePullbackShape
 
@@ -251,12 +259,15 @@ def wideSpan (B : C) (objs : J → C) (arrows : ∀ j : J, B ⟶ objs j) : WideP
 #align category_theory.limits.wide_pushout_shape.wide_span CategoryTheory.Limits.WidePushoutShape.wideSpan
 -/
 
+#print CategoryTheory.Limits.WidePushoutShape.diagramIsoWideSpan /-
 /-- Every diagram is naturally isomorphic (actually, equal) to a `wide_span` -/
 def diagramIsoWideSpan (F : WidePushoutShape J ⥤ C) :
     F ≅ wideSpan (F.obj none) (fun j => F.obj (some j)) fun j => F.map (Hom.init j) :=
   (NatIso.ofComponents fun j => eqToIso <| by tidy) <| by tidy
 #align category_theory.limits.wide_pushout_shape.diagram_iso_wide_span CategoryTheory.Limits.WidePushoutShape.diagramIsoWideSpan
+-/
 
+#print CategoryTheory.Limits.WidePushoutShape.mkCocone /-
 /-- Construct a cocone over a wide span. -/
 @[simps]
 def mkCocone {F : WidePushoutShape J ⥤ C} {X : C} (f : F.obj none ⟶ X) (ι : ∀ j, F.obj (some j) ⟶ X)
@@ -270,6 +281,7 @@ def mkCocone {F : WidePushoutShape J ⥤ C} {X : C} (f : F.obj none ⟶ X) (ι :
         naturality' := fun j j' f => by
           cases j <;> cases j' <;> cases f <;> unfold_aux <;> dsimp <;> simp [w] } }
 #align category_theory.limits.wide_pushout_shape.mk_cocone CategoryTheory.Limits.WidePushoutShape.mkCocone
+-/
 
 end WidePushoutShape
 
@@ -343,10 +355,12 @@ noncomputable abbrev base : widePullback _ _ arrows ⟶ B :=
 #align category_theory.limits.wide_pullback.base CategoryTheory.Limits.WidePullback.base
 -/
 
+#print CategoryTheory.Limits.WidePullback.π_arrow /-
 @[simp, reassoc]
 theorem π_arrow (j : J) : π arrows j ≫ arrows _ = base arrows := by
   apply limit.w (wide_pullback_shape.wide_cospan _ _ _) (wide_pullback_shape.hom.term j)
 #align category_theory.limits.wide_pullback.π_arrow CategoryTheory.Limits.WidePullback.π_arrow
+-/
 
 variable {arrows}
 
@@ -362,14 +376,19 @@ variable (arrows)
 
 variable {X : C} (f : X ⟶ B) (fs : ∀ j : J, X ⟶ objs j) (w : ∀ j, fs j ≫ arrows j = f)
 
+#print CategoryTheory.Limits.WidePullback.lift_π /-
 @[simp, reassoc]
 theorem lift_π (j : J) : lift f fs w ≫ π arrows j = fs _ := by simp; rfl
 #align category_theory.limits.wide_pullback.lift_π CategoryTheory.Limits.WidePullback.lift_π
+-/
 
+#print CategoryTheory.Limits.WidePullback.lift_base /-
 @[simp, reassoc]
 theorem lift_base : lift f fs w ≫ base arrows = f := by simp; rfl
 #align category_theory.limits.wide_pullback.lift_base CategoryTheory.Limits.WidePullback.lift_base
+-/
 
+#print CategoryTheory.Limits.WidePullback.eq_lift_of_comp_eq /-
 theorem eq_lift_of_comp_eq (g : X ⟶ widePullback _ _ arrows) :
     (∀ j : J, g ≫ π arrows j = fs j) → g ≫ base arrows = f → g = lift f fs w :=
   by
@@ -381,14 +400,18 @@ theorem eq_lift_of_comp_eq (g : X ⟶ widePullback _ _ arrows) :
   · apply h2
   · apply h1
 #align category_theory.limits.wide_pullback.eq_lift_of_comp_eq CategoryTheory.Limits.WidePullback.eq_lift_of_comp_eq
+-/
 
+#print CategoryTheory.Limits.WidePullback.hom_eq_lift /-
 theorem hom_eq_lift (g : X ⟶ widePullback _ _ arrows) :
     g = lift (g ≫ base arrows) (fun j => g ≫ π arrows j) (by tidy) :=
   by
   apply eq_lift_of_comp_eq
   tidy
 #align category_theory.limits.wide_pullback.hom_eq_lift CategoryTheory.Limits.WidePullback.hom_eq_lift
+-/
 
+#print CategoryTheory.Limits.WidePullback.hom_ext /-
 @[ext]
 theorem hom_ext (g1 g2 : X ⟶ widePullback _ _ arrows) :
     (∀ j : J, g1 ≫ π arrows j = g2 ≫ π arrows j) → g1 ≫ base arrows = g2 ≫ base arrows → g1 = g2 :=
@@ -399,6 +422,7 @@ theorem hom_ext (g1 g2 : X ⟶ widePullback _ _ arrows) :
   · apply h2
   · apply h1
 #align category_theory.limits.wide_pullback.hom_ext CategoryTheory.Limits.WidePullback.hom_ext
+-/
 
 end WidePullback
 
@@ -422,10 +446,12 @@ noncomputable abbrev head : B ⟶ widePushout B objs arrows :=
 #align category_theory.limits.wide_pushout.head CategoryTheory.Limits.WidePushout.head
 -/
 
+#print CategoryTheory.Limits.WidePushout.arrow_ι /-
 @[simp, reassoc]
 theorem arrow_ι (j : J) : arrows j ≫ ι arrows j = head arrows := by
   apply colimit.w (wide_pushout_shape.wide_span _ _ _) (wide_pushout_shape.hom.init j)
 #align category_theory.limits.wide_pushout.arrow_ι CategoryTheory.Limits.WidePushout.arrow_ι
+-/
 
 variable {arrows}
 
@@ -441,14 +467,19 @@ variable (arrows)
 
 variable {X : C} (f : B ⟶ X) (fs : ∀ j : J, objs j ⟶ X) (w : ∀ j, arrows j ≫ fs j = f)
 
+#print CategoryTheory.Limits.WidePushout.ι_desc /-
 @[simp, reassoc]
 theorem ι_desc (j : J) : ι arrows j ≫ desc f fs w = fs _ := by simp; rfl
 #align category_theory.limits.wide_pushout.ι_desc CategoryTheory.Limits.WidePushout.ι_desc
+-/
 
+#print CategoryTheory.Limits.WidePushout.head_desc /-
 @[simp, reassoc]
 theorem head_desc : head arrows ≫ desc f fs w = f := by simp; rfl
 #align category_theory.limits.wide_pushout.head_desc CategoryTheory.Limits.WidePushout.head_desc
+-/
 
+#print CategoryTheory.Limits.WidePushout.eq_desc_of_comp_eq /-
 theorem eq_desc_of_comp_eq (g : widePushout _ _ arrows ⟶ X) :
     (∀ j : J, ι arrows j ≫ g = fs j) → head arrows ≫ g = f → g = desc f fs w :=
   by
@@ -460,14 +491,18 @@ theorem eq_desc_of_comp_eq (g : widePushout _ _ arrows ⟶ X) :
   · apply h2
   · apply h1
 #align category_theory.limits.wide_pushout.eq_desc_of_comp_eq CategoryTheory.Limits.WidePushout.eq_desc_of_comp_eq
+-/
 
+#print CategoryTheory.Limits.WidePushout.hom_eq_desc /-
 theorem hom_eq_desc (g : widePushout _ _ arrows ⟶ X) :
     g = desc (head arrows ≫ g) (fun j => ι arrows j ≫ g) fun j => by rw [← category.assoc]; simp :=
   by
   apply eq_desc_of_comp_eq
   tidy
 #align category_theory.limits.wide_pushout.hom_eq_desc CategoryTheory.Limits.WidePushout.hom_eq_desc
+-/
 
+#print CategoryTheory.Limits.WidePushout.hom_ext /-
 @[ext]
 theorem hom_ext (g1 g2 : widePushout _ _ arrows ⟶ X) :
     (∀ j : J, ι arrows j ≫ g1 = ι arrows j ≫ g2) → head arrows ≫ g1 = head arrows ≫ g2 → g1 = g2 :=
@@ -478,6 +513,7 @@ theorem hom_ext (g1 g2 : widePushout _ _ arrows ⟶ X) :
   · apply h2
   · apply h1
 #align category_theory.limits.wide_pushout.hom_ext CategoryTheory.Limits.WidePushout.hom_ext
+-/
 
 end WidePushout
 
@@ -573,6 +609,7 @@ def widePullbackShapeUnopOp : widePullbackShapeOp J ⋙ widePushoutShapeUnop J 
 #align category_theory.limits.wide_pullback_shape_unop_op CategoryTheory.Limits.widePullbackShapeUnopOp
 -/
 
+#print CategoryTheory.Limits.widePushoutShapeOpEquiv /-
 /-- The duality equivalence `(wide_pushout_shape J)ᵒᵖ ≌ wide_pullback_shape J` -/
 @[simps]
 def widePushoutShapeOpEquiv : (WidePushoutShape J)ᵒᵖ ≌ WidePullbackShape J
@@ -582,7 +619,9 @@ def widePushoutShapeOpEquiv : (WidePushoutShape J)ᵒᵖ ≌ WidePullbackShape J
   unitIso := (widePushoutShapeOpUnop J).symm
   counitIso := widePullbackShapeUnopOp J
 #align category_theory.limits.wide_pushout_shape_op_equiv CategoryTheory.Limits.widePushoutShapeOpEquiv
+-/
 
+#print CategoryTheory.Limits.widePullbackShapeOpEquiv /-
 /-- The duality equivalence `(wide_pullback_shape J)ᵒᵖ ≌ wide_pushout_shape J` -/
 @[simps]
 def widePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape J
@@ -592,6 +631,7 @@ def widePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape
   unitIso := (widePullbackShapeOpUnop J).symm
   counitIso := widePushoutShapeUnopOp J
 #align category_theory.limits.wide_pullback_shape_op_equiv CategoryTheory.Limits.widePullbackShapeOpEquiv
+-/
 
 #print CategoryTheory.Limits.hasWidePullbacks_shrink /-
 /-- If a category has wide pullbacks on a higher universe level it also has wide pullbacks
Diff
@@ -44,14 +44,16 @@ variable (J : Type w)
 #print CategoryTheory.Limits.WidePullbackShape /-
 /-- A wide pullback shape for any type `J` can be written simply as `option J`. -/
 def WidePullbackShape :=
-  Option J deriving Inhabited
+  Option J
+deriving Inhabited
 #align category_theory.limits.wide_pullback_shape CategoryTheory.Limits.WidePullbackShape
 -/
 
 #print CategoryTheory.Limits.WidePushoutShape /-
 /-- A wide pushout shape for any type `J` can be written simply as `option J`. -/
 def WidePushoutShape :=
-  Option J deriving Inhabited
+  Option J
+deriving Inhabited
 #align category_theory.limits.wide_pushout_shape CategoryTheory.Limits.WidePushoutShape
 -/
 
@@ -241,7 +243,11 @@ def wideSpan (B : C) (objs : J → C) (arrows : ∀ j : J, B ⟶ objs j) : WideP
     cases' f with _ j
     · apply 𝟙 _
     · exact arrows j
-  map_comp' := by rintro (_ | _) (_ | _) (_ | _) (_ | _) (_ | _) <;> first |simpa|simp
+  map_comp' := by
+    rintro (_ | _) (_ | _) (_ | _) (_ | _) (_ | _) <;>
+      first
+      | simpa
+      | simp
 #align category_theory.limits.wide_pushout_shape.wide_span CategoryTheory.Limits.WidePushoutShape.wideSpan
 -/
 
Diff
@@ -131,24 +131,12 @@ def wideCospan (B : C) (objs : J → C) (arrows : ∀ j : J, objs j ⟶ B) : Wid
 #align category_theory.limits.wide_pullback_shape.wide_cospan CategoryTheory.Limits.WidePullbackShape.wideCospan
 -/
 
-/- warning: category_theory.limits.wide_pullback_shape.diagram_iso_wide_cospan -> CategoryTheory.Limits.WidePullbackShape.diagramIsoWideCospan is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1), CategoryTheory.Iso.{max u1 u2, max u1 u2 u1 u3} (CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1) (CategoryTheory.Functor.category.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1) F (CategoryTheory.Limits.WidePullbackShape.wideCospan.{u1, u2, u3} J C _inst_1 (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J)) (fun (j : J) => CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j)) (fun (j : J) => CategoryTheory.Functor.map.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j) (Option.none.{u1} J) (CategoryTheory.Limits.WidePullbackShape.Hom.term.{u1} J j)))
-but is expected to have type
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1), CategoryTheory.Iso.{max u2 u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1) (CategoryTheory.Functor.category.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1) F (CategoryTheory.Limits.WidePullbackShape.wideCospan.{u1, u2, u3} J C _inst_1 (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J)) (fun (j : J) => Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j)) (fun (j : J) => Prefunctor.map.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j) (Option.none.{u1} J) (CategoryTheory.Limits.WidePullbackShape.Hom.term.{u1} J j)))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback_shape.diagram_iso_wide_cospan CategoryTheory.Limits.WidePullbackShape.diagramIsoWideCospanₓ'. -/
 /-- Every diagram is naturally isomorphic (actually, equal) to a `wide_cospan` -/
 def diagramIsoWideCospan (F : WidePullbackShape J ⥤ C) :
     F ≅ wideCospan (F.obj none) (fun j => F.obj (some j)) fun j => F.map (Hom.term j) :=
   (NatIso.ofComponents fun j => eqToIso <| by tidy) <| by tidy
 #align category_theory.limits.wide_pullback_shape.diagram_iso_wide_cospan CategoryTheory.Limits.WidePullbackShape.diagramIsoWideCospan
 
-/- warning: category_theory.limits.wide_pullback_shape.mk_cone -> CategoryTheory.Limits.WidePullbackShape.mkCone is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1} {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J))) (π : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j))), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J))) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j)) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J)) (π j) (CategoryTheory.Functor.map.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j) (Option.none.{u1} J) (CategoryTheory.Limits.WidePullbackShape.Hom.term.{u1} J j))) f) -> (CategoryTheory.Limits.Cone.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F)
-but is expected to have type
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1} {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J))) (π : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j))), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J))) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j)) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J)) (π j) (Prefunctor.map.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j) (Option.none.{u1} J) (CategoryTheory.Limits.WidePullbackShape.Hom.term.{u1} J j))) f) -> (CategoryTheory.Limits.Cone.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F)
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback_shape.mk_cone CategoryTheory.Limits.WidePullbackShape.mkConeₓ'. -/
 /-- Construct a cone over a wide cospan. -/
 @[simps]
 def mkCone {F : WidePullbackShape J ⥤ C} {X : C} (f : X ⟶ F.obj none) (π : ∀ j, X ⟶ F.obj (some j))
@@ -163,12 +151,6 @@ def mkCone {F : WidePullbackShape J ⥤ C} {X : C} (f : X ⟶ F.obj none) (π :
           cases j <;> cases j' <;> cases f <;> unfold_aux <;> dsimp <;> simp [w] } }
 #align category_theory.limits.wide_pullback_shape.mk_cone CategoryTheory.Limits.WidePullbackShape.mkCone
 
-/- warning: category_theory.limits.wide_pullback_shape.equivalence_of_equiv -> CategoryTheory.Limits.WidePullbackShape.equivalenceOfEquiv is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} (J' : Type.{u2}), (Equiv.{succ u1, succ u2} J J') -> (CategoryTheory.Equivalence.{u1, u2, u1, u2} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) (CategoryTheory.Limits.WidePullbackShape.{u2} J') (CategoryTheory.Limits.WidePullbackShape.category.{u2} J'))
-but is expected to have type
-  forall {J : Type.{u1}} (J' : Type.{u2}), (Equiv.{succ u1, succ u2} J J') -> (CategoryTheory.Equivalence.{u1, u2, u1, u2} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.{u2} J') (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u2} J'))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback_shape.equivalence_of_equiv CategoryTheory.Limits.WidePullbackShape.equivalenceOfEquivₓ'. -/
 /-- Wide pullback diagrams of equivalent index types are equivlent. -/
 def equivalenceOfEquiv (J' : Type w') (h : J ≃ J') : WidePullbackShape J ≌ WidePullbackShape J'
     where
@@ -182,12 +164,6 @@ def equivalenceOfEquiv (J' : Type w') (h : J ≃ J') : WidePullbackShape J ≌ W
       simp only [eq_iff_true_of_subsingleton]
 #align category_theory.limits.wide_pullback_shape.equivalence_of_equiv CategoryTheory.Limits.WidePullbackShape.equivalenceOfEquiv
 
-/- warning: category_theory.limits.wide_pullback_shape.ulift_equivalence -> CategoryTheory.Limits.WidePullbackShape.uliftEquivalence is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}}, CategoryTheory.Equivalence.{max u2 u1, max u1 u2, max u1 u2, max u1 u2} (CategoryTheory.ULiftHom.{u2, max u1 u2} (ULift.{u2, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J))) (CategoryTheory.ULiftHom.category.{u1, u2, max u1 u2} (ULift.{u2, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J)) (CategoryTheory.uliftCategory.{u1, u1, u2} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) (CategoryTheory.Limits.WidePullbackShape.{max u1 u2} (ULift.{u2, u1} J)) (CategoryTheory.Limits.WidePullbackShape.category.{max u1 u2} (ULift.{u2, u1} J))
-but is expected to have type
-  forall {J : Type.{u1}}, CategoryTheory.Equivalence.{max u1 u2, max u1 u2, max u2 u1, max u1 u2} (CategoryTheory.ULiftHom.{u2, max u2 u1} (ULift.{u2, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J))) (CategoryTheory.Limits.WidePullbackShape.{max u1 u2} (ULift.{u2, u1} J)) (CategoryTheory.ULiftHom.category.{u1, u2, max u1 u2} (ULift.{u2, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J)) (CategoryTheory.uliftCategory.{u1, u1, u2} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) (CategoryTheory.Limits.WidePullbackShape.category.{max u1 u2} (ULift.{u2, u1} J))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback_shape.ulift_equivalence CategoryTheory.Limits.WidePullbackShape.uliftEquivalenceₓ'. -/
 /-- Lifting universe and morphism levels preserves wide pullback diagrams. -/
 def uliftEquivalence :
     ULiftHom.{w'} (ULift.{w'} (WidePullbackShape J)) ≌ WidePullbackShape (ULift J) :=
@@ -269,24 +245,12 @@ def wideSpan (B : C) (objs : J → C) (arrows : ∀ j : J, B ⟶ objs j) : WideP
 #align category_theory.limits.wide_pushout_shape.wide_span CategoryTheory.Limits.WidePushoutShape.wideSpan
 -/
 
-/- warning: category_theory.limits.wide_pushout_shape.diagram_iso_wide_span -> CategoryTheory.Limits.WidePushoutShape.diagramIsoWideSpan is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1), CategoryTheory.Iso.{max u1 u2, max u1 u2 u1 u3} (CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1) (CategoryTheory.Functor.category.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1) F (CategoryTheory.Limits.WidePushoutShape.wideSpan.{u1, u2, u3} J C _inst_1 (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J)) (fun (j : J) => CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j)) (fun (j : J) => CategoryTheory.Functor.map.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J) (Option.some.{u1} J j) (CategoryTheory.Limits.WidePushoutShape.Hom.init.{u1} J j)))
-but is expected to have type
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1), CategoryTheory.Iso.{max u2 u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1) (CategoryTheory.Functor.category.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1) F (CategoryTheory.Limits.WidePushoutShape.wideSpan.{u1, u2, u3} J C _inst_1 (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J)) (fun (j : J) => Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j)) (fun (j : J) => Prefunctor.map.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J) (Option.some.{u1} J j) (CategoryTheory.Limits.WidePushoutShape.Hom.init.{u1} J j)))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout_shape.diagram_iso_wide_span CategoryTheory.Limits.WidePushoutShape.diagramIsoWideSpanₓ'. -/
 /-- Every diagram is naturally isomorphic (actually, equal) to a `wide_span` -/
 def diagramIsoWideSpan (F : WidePushoutShape J ⥤ C) :
     F ≅ wideSpan (F.obj none) (fun j => F.obj (some j)) fun j => F.map (Hom.init j) :=
   (NatIso.ofComponents fun j => eqToIso <| by tidy) <| by tidy
 #align category_theory.limits.wide_pushout_shape.diagram_iso_wide_span CategoryTheory.Limits.WidePushoutShape.diagramIsoWideSpan
 
-/- warning: category_theory.limits.wide_pushout_shape.mk_cocone -> CategoryTheory.Limits.WidePushoutShape.mkCocone is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1} {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J)) X) (ι : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j)) X), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J)) X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J)) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j)) X (CategoryTheory.Functor.map.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J) (Option.some.{u1} J j) (CategoryTheory.Limits.WidePushoutShape.Hom.init.{u1} J j)) (ι j)) f) -> (CategoryTheory.Limits.Cocone.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F)
-but is expected to have type
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1} {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J)) X) (ι : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j)) X), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J)) X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J)) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j)) X (Prefunctor.map.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J) (Option.some.{u1} J j) (CategoryTheory.Limits.WidePushoutShape.Hom.init.{u1} J j)) (ι j)) f) -> (CategoryTheory.Limits.Cocone.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F)
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout_shape.mk_cocone CategoryTheory.Limits.WidePushoutShape.mkCoconeₓ'. -/
 /-- Construct a cocone over a wide span. -/
 @[simps]
 def mkCocone {F : WidePushoutShape J ⥤ C} {X : C} (f : F.obj none ⟶ X) (ι : ∀ j, F.obj (some j) ⟶ X)
@@ -373,12 +337,6 @@ noncomputable abbrev base : widePullback _ _ arrows ⟶ B :=
 #align category_theory.limits.wide_pullback.base CategoryTheory.Limits.WidePullback.base
 -/
 
-/- warning: category_theory.limits.wide_pullback.π_arrow -> CategoryTheory.Limits.WidePullback.π_arrow is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u1, u2, u3} J C _inst_1 B objs arrows] (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) B (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (arrows j)) (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)
-but is expected to have type
-  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) B (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (arrows j)) (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.π_arrow CategoryTheory.Limits.WidePullback.π_arrowₓ'. -/
 @[simp, reassoc]
 theorem π_arrow (j : J) : π arrows j ≫ arrows _ = base arrows := by
   apply limit.w (wide_pullback_shape.wide_cospan _ _ _) (wide_pullback_shape.hom.term j)
@@ -398,32 +356,14 @@ variable (arrows)
 
 variable {X : C} (f : X ⟶ B) (fs : ∀ j : J, X ⟶ objs j) (w : ∀ j, fs j ≫ arrows j = f)
 
-/- warning: category_theory.limits.wide_pullback.lift_π -> CategoryTheory.Limits.WidePullback.lift_π is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (fs j) (arrows j)) f) (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (objs j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2) (objs j) (CategoryTheory.Limits.WidePullback.lift.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w) (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (fs j)
-but is expected to have type
-  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (fs j) (arrows j)) f) (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2) (objs j) (CategoryTheory.Limits.WidePullback.lift.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w) (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (fs j)
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.lift_π CategoryTheory.Limits.WidePullback.lift_πₓ'. -/
 @[simp, reassoc]
 theorem lift_π (j : J) : lift f fs w ≫ π arrows j = fs _ := by simp; rfl
 #align category_theory.limits.wide_pullback.lift_π CategoryTheory.Limits.WidePullback.lift_π
 
-/- warning: category_theory.limits.wide_pullback.lift_base -> CategoryTheory.Limits.WidePullback.lift_base is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (fs j) (arrows j)) f), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2) B (CategoryTheory.Limits.WidePullback.lift.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w) (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) f
-but is expected to have type
-  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (fs j) (arrows j)) f), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2) B (CategoryTheory.Limits.WidePullback.lift.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w) (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) f
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.lift_base CategoryTheory.Limits.WidePullback.lift_baseₓ'. -/
 @[simp, reassoc]
 theorem lift_base : lift f fs w ≫ base arrows = f := by simp; rfl
 #align category_theory.limits.wide_pullback.lift_base CategoryTheory.Limits.WidePullback.lift_base
 
-/- warning: category_theory.limits.wide_pullback.eq_lift_of_comp_eq -> CategoryTheory.Limits.WidePullback.eq_lift_of_comp_eq is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (fs j) (arrows j)) f) (g : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (objs j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (fs j)) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) f) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) g (CategoryTheory.Limits.WidePullback.lift.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w))
-but is expected to have type
-  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (fs j) (arrows j)) f) (g : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)), (forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (fs j)) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) f) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) g (CategoryTheory.Limits.WidePullback.lift.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.eq_lift_of_comp_eq CategoryTheory.Limits.WidePullback.eq_lift_of_comp_eqₓ'. -/
 theorem eq_lift_of_comp_eq (g : X ⟶ widePullback _ _ arrows) :
     (∀ j : J, g ≫ π arrows j = fs j) → g ≫ base arrows = f → g = lift f fs w :=
   by
@@ -436,9 +376,6 @@ theorem eq_lift_of_comp_eq (g : X ⟶ widePullback _ _ arrows) :
   · apply h1
 #align category_theory.limits.wide_pullback.eq_lift_of_comp_eq CategoryTheory.Limits.WidePullback.eq_lift_of_comp_eq
 
-/- warning: category_theory.limits.wide_pullback.hom_eq_lift -> CategoryTheory.Limits.WidePullback.hom_eq_lift is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.hom_eq_lift CategoryTheory.Limits.WidePullback.hom_eq_liftₓ'. -/
 theorem hom_eq_lift (g : X ⟶ widePullback _ _ arrows) :
     g = lift (g ≫ base arrows) (fun j => g ≫ π arrows j) (by tidy) :=
   by
@@ -446,12 +383,6 @@ theorem hom_eq_lift (g : X ⟶ widePullback _ _ arrows) :
   tidy
 #align category_theory.limits.wide_pullback.hom_eq_lift CategoryTheory.Limits.WidePullback.hom_eq_lift
 
-/- warning: category_theory.limits.wide_pullback.hom_ext -> CategoryTheory.Limits.WidePullback.hom_ext is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (g1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (g2 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (objs j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g1 (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g2 (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j))) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g1 (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g2 (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) g1 g2)
-but is expected to have type
-  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (g1 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (g2 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)), (forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g1 (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g2 (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j))) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g1 (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g2 (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) g1 g2)
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.hom_ext CategoryTheory.Limits.WidePullback.hom_extₓ'. -/
 @[ext]
 theorem hom_ext (g1 g2 : X ⟶ widePullback _ _ arrows) :
     (∀ j : J, g1 ≫ π arrows j = g2 ≫ π arrows j) → g1 ≫ base arrows = g2 ≫ base arrows → g1 = g2 :=
@@ -485,12 +416,6 @@ noncomputable abbrev head : B ⟶ widePushout B objs arrows :=
 #align category_theory.limits.wide_pushout.head CategoryTheory.Limits.WidePushout.head
 -/
 
-/- warning: category_theory.limits.wide_pushout.arrow_ι -> CategoryTheory.Limits.WidePushout.arrow_ι is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u1, u2, u3} J C _inst_1 B objs arrows] (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)
-but is expected to have type
-  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.arrow_ι CategoryTheory.Limits.WidePushout.arrow_ιₓ'. -/
 @[simp, reassoc]
 theorem arrow_ι (j : J) : arrows j ≫ ι arrows j = head arrows := by
   apply colimit.w (wide_pushout_shape.wide_span _ _ _) (wide_pushout_shape.hom.init j)
@@ -510,32 +435,14 @@ variable (arrows)
 
 variable {X : C} (f : B ⟶ X) (fs : ∀ j : J, objs j ⟶ X) (w : ∀ j, arrows j ≫ fs j = f)
 
-/- warning: category_theory.limits.wide_pushout.ι_desc -> CategoryTheory.Limits.WidePushout.ι_desc is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (fs j)) f) (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (CategoryTheory.Limits.WidePushout.desc.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w)) (fs j)
-but is expected to have type
-  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (fs j)) f) (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (CategoryTheory.Limits.WidePushout.desc.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w)) (fs j)
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.ι_desc CategoryTheory.Limits.WidePushout.ι_descₓ'. -/
 @[simp, reassoc]
 theorem ι_desc (j : J) : ι arrows j ≫ desc f fs w = fs _ := by simp; rfl
 #align category_theory.limits.wide_pushout.ι_desc CategoryTheory.Limits.WidePushout.ι_desc
 
-/- warning: category_theory.limits.wide_pushout.head_desc -> CategoryTheory.Limits.WidePushout.head_desc is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (fs j)) f), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.Limits.WidePushout.desc.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w)) f
-but is expected to have type
-  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (fs j)) f), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.Limits.WidePushout.desc.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w)) f
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.head_desc CategoryTheory.Limits.WidePushout.head_descₓ'. -/
 @[simp, reassoc]
 theorem head_desc : head arrows ≫ desc f fs w = f := by simp; rfl
 #align category_theory.limits.wide_pushout.head_desc CategoryTheory.Limits.WidePushout.head_desc
 
-/- warning: category_theory.limits.wide_pushout.eq_desc_of_comp_eq -> CategoryTheory.Limits.WidePushout.eq_desc_of_comp_eq is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (fs j)) f) (g : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) (fs j)) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) f) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g (CategoryTheory.Limits.WidePushout.desc.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w))
-but is expected to have type
-  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (fs j)) f) (g : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), (forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) (fs j)) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) f) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g (CategoryTheory.Limits.WidePushout.desc.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.eq_desc_of_comp_eq CategoryTheory.Limits.WidePushout.eq_desc_of_comp_eqₓ'. -/
 theorem eq_desc_of_comp_eq (g : widePushout _ _ arrows ⟶ X) :
     (∀ j : J, ι arrows j ≫ g = fs j) → head arrows ≫ g = f → g = desc f fs w :=
   by
@@ -548,9 +455,6 @@ theorem eq_desc_of_comp_eq (g : widePushout _ _ arrows ⟶ X) :
   · apply h1
 #align category_theory.limits.wide_pushout.eq_desc_of_comp_eq CategoryTheory.Limits.WidePushout.eq_desc_of_comp_eq
 
-/- warning: category_theory.limits.wide_pushout.hom_eq_desc -> CategoryTheory.Limits.WidePushout.hom_eq_desc is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.hom_eq_desc CategoryTheory.Limits.WidePushout.hom_eq_descₓ'. -/
 theorem hom_eq_desc (g : widePushout _ _ arrows ⟶ X) :
     g = desc (head arrows ≫ g) (fun j => ι arrows j ≫ g) fun j => by rw [← category.assoc]; simp :=
   by
@@ -558,12 +462,6 @@ theorem hom_eq_desc (g : widePushout _ _ arrows ⟶ X) :
   tidy
 #align category_theory.limits.wide_pushout.hom_eq_desc CategoryTheory.Limits.WidePushout.hom_eq_desc
 
-/- warning: category_theory.limits.wide_pushout.hom_ext -> CategoryTheory.Limits.WidePushout.hom_ext is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (g1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (g2 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g1) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g2)) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g1) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g2)) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g1 g2)
-but is expected to have type
-  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (g1 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (g2 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), (forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g1) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g2)) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g1) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g2)) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g1 g2)
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.hom_ext CategoryTheory.Limits.WidePushout.hom_extₓ'. -/
 @[ext]
 theorem hom_ext (g1 g2 : widePushout _ _ arrows ⟶ X) :
     (∀ j : J, ι arrows j ≫ g1 = ι arrows j ≫ g2) → head arrows ≫ g1 = head arrows ≫ g2 → g1 = g2 :=
@@ -669,12 +567,6 @@ def widePullbackShapeUnopOp : widePullbackShapeOp J ⋙ widePushoutShapeUnop J 
 #align category_theory.limits.wide_pullback_shape_unop_op CategoryTheory.Limits.widePullbackShapeUnopOp
 -/
 
-/- warning: category_theory.limits.wide_pushout_shape_op_equiv -> CategoryTheory.Limits.widePushoutShapeOpEquiv is a dubious translation:
-lean 3 declaration is
-  forall (J : Type.{u1}), CategoryTheory.Equivalence.{u1, u1, u1, u1} (Opposite.{succ u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J)) (CategoryTheory.Category.opposite.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J)) (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J)
-but is expected to have type
-  forall (J : Type.{u1}), CategoryTheory.Equivalence.{u1, u1, u1, u1} (Opposite.{succ u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J)) (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.opposite.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J)) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J)
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout_shape_op_equiv CategoryTheory.Limits.widePushoutShapeOpEquivₓ'. -/
 /-- The duality equivalence `(wide_pushout_shape J)ᵒᵖ ≌ wide_pullback_shape J` -/
 @[simps]
 def widePushoutShapeOpEquiv : (WidePushoutShape J)ᵒᵖ ≌ WidePullbackShape J
@@ -685,12 +577,6 @@ def widePushoutShapeOpEquiv : (WidePushoutShape J)ᵒᵖ ≌ WidePullbackShape J
   counitIso := widePullbackShapeUnopOp J
 #align category_theory.limits.wide_pushout_shape_op_equiv CategoryTheory.Limits.widePushoutShapeOpEquiv
 
-/- warning: category_theory.limits.wide_pullback_shape_op_equiv -> CategoryTheory.Limits.widePullbackShapeOpEquiv is a dubious translation:
-lean 3 declaration is
-  forall (J : Type.{u1}), CategoryTheory.Equivalence.{u1, u1, u1, u1} (Opposite.{succ u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J)) (CategoryTheory.Category.opposite.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J)) (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J)
-but is expected to have type
-  forall (J : Type.{u1}), CategoryTheory.Equivalence.{u1, u1, u1, u1} (Opposite.{succ u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J)) (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.opposite.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J)) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J)
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback_shape_op_equiv CategoryTheory.Limits.widePullbackShapeOpEquivₓ'. -/
 /-- The duality equivalence `(wide_pullback_shape J)ᵒᵖ ≌ wide_pushout_shape J` -/
 @[simps]
 def widePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape J
Diff
@@ -405,10 +405,7 @@ but is expected to have type
   forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (fs j) (arrows j)) f) (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2) (objs j) (CategoryTheory.Limits.WidePullback.lift.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w) (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (fs j)
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.lift_π CategoryTheory.Limits.WidePullback.lift_πₓ'. -/
 @[simp, reassoc]
-theorem lift_π (j : J) : lift f fs w ≫ π arrows j = fs _ :=
-  by
-  simp
-  rfl
+theorem lift_π (j : J) : lift f fs w ≫ π arrows j = fs _ := by simp; rfl
 #align category_theory.limits.wide_pullback.lift_π CategoryTheory.Limits.WidePullback.lift_π
 
 /- warning: category_theory.limits.wide_pullback.lift_base -> CategoryTheory.Limits.WidePullback.lift_base is a dubious translation:
@@ -418,10 +415,7 @@ but is expected to have type
   forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (fs j) (arrows j)) f), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2) B (CategoryTheory.Limits.WidePullback.lift.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w) (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) f
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.lift_base CategoryTheory.Limits.WidePullback.lift_baseₓ'. -/
 @[simp, reassoc]
-theorem lift_base : lift f fs w ≫ base arrows = f :=
-  by
-  simp
-  rfl
+theorem lift_base : lift f fs w ≫ base arrows = f := by simp; rfl
 #align category_theory.limits.wide_pullback.lift_base CategoryTheory.Limits.WidePullback.lift_base
 
 /- warning: category_theory.limits.wide_pullback.eq_lift_of_comp_eq -> CategoryTheory.Limits.WidePullback.eq_lift_of_comp_eq is a dubious translation:
@@ -523,10 +517,7 @@ but is expected to have type
   forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (fs j)) f) (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (CategoryTheory.Limits.WidePushout.desc.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w)) (fs j)
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.ι_desc CategoryTheory.Limits.WidePushout.ι_descₓ'. -/
 @[simp, reassoc]
-theorem ι_desc (j : J) : ι arrows j ≫ desc f fs w = fs _ :=
-  by
-  simp
-  rfl
+theorem ι_desc (j : J) : ι arrows j ≫ desc f fs w = fs _ := by simp; rfl
 #align category_theory.limits.wide_pushout.ι_desc CategoryTheory.Limits.WidePushout.ι_desc
 
 /- warning: category_theory.limits.wide_pushout.head_desc -> CategoryTheory.Limits.WidePushout.head_desc is a dubious translation:
@@ -536,10 +527,7 @@ but is expected to have type
   forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (fs j)) f), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.Limits.WidePushout.desc.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w)) f
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.head_desc CategoryTheory.Limits.WidePushout.head_descₓ'. -/
 @[simp, reassoc]
-theorem head_desc : head arrows ≫ desc f fs w = f :=
-  by
-  simp
-  rfl
+theorem head_desc : head arrows ≫ desc f fs w = f := by simp; rfl
 #align category_theory.limits.wide_pushout.head_desc CategoryTheory.Limits.WidePushout.head_desc
 
 /- warning: category_theory.limits.wide_pushout.eq_desc_of_comp_eq -> CategoryTheory.Limits.WidePushout.eq_desc_of_comp_eq is a dubious translation:
@@ -564,11 +552,7 @@ theorem eq_desc_of_comp_eq (g : widePushout _ _ arrows ⟶ X) :
 <too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.hom_eq_desc CategoryTheory.Limits.WidePushout.hom_eq_descₓ'. -/
 theorem hom_eq_desc (g : widePushout _ _ arrows ⟶ X) :
-    g =
-      desc (head arrows ≫ g) (fun j => ι arrows j ≫ g) fun j =>
-        by
-        rw [← category.assoc]
-        simp :=
+    g = desc (head arrows ≫ g) (fun j => ι arrows j ≫ g) fun j => by rw [← category.assoc]; simp :=
   by
   apply eq_desc_of_comp_eq
   tidy
Diff
@@ -443,10 +443,7 @@ theorem eq_lift_of_comp_eq (g : X ⟶ widePullback _ _ arrows) :
 #align category_theory.limits.wide_pullback.eq_lift_of_comp_eq CategoryTheory.Limits.WidePullback.eq_lift_of_comp_eq
 
 /- warning: category_theory.limits.wide_pullback.hom_eq_lift -> CategoryTheory.Limits.WidePullback.hom_eq_lift is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (g : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) g (CategoryTheory.Limits.WidePullback.lift.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (fun (j : J) => CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (fun (j : J) => id.{0} (forall {X : C} (g : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) (fun {X : C} (g : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) (j : J) => Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2))) True (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2))) True) (Eq.trans.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2))) True ((fun (a : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (a_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (e_1 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) a a_1) (ᾰ : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (ᾰ_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (e_2 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) ᾰ ᾰ_1) => congr.{succ u2, 1} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) a) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) a_1) ᾰ ᾰ_1 (congr_arg.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) ((Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) -> Prop) a a_1 (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (Eq.trans.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) B (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) (arrows j))) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.Category.assoc.{u2, u3} C _inst_1 X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) B g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) (arrows j)) ((fun (ᾰ : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) (ᾰ_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) (e_1 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) ᾰ ᾰ_1) (ᾰ_2 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B) (ᾰ_3 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B) (e_2 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B) ᾰ_2 ᾰ_3) => congr.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B ᾰ) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B ᾰ_1) ᾰ_2 ᾰ_3 (congr_arg.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) ((Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B) -> (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B)) ᾰ ᾰ_1 (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B) e_1) e_2) g g (rfl.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) B (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) (arrows j)) (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.Limits.WidePullback.π_arrow.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j))) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) (rfl.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)))) (propext (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) True (eq_self_iff_true.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)))))) trivial) X g j))
-but is expected to have type
-  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (g : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) g (CategoryTheory.Limits.WidePullback.lift.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (fun (j : J) => of_eq_true (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) (Eq.trans.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) True (congrFun.{succ u3, 1} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) => Prop) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (arrows j))) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) (congrArg.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) ((Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) -> Prop) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B)) (Eq.trans.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) B (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (arrows j))) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.Category.assoc.{u3, u1} C _inst_1 X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) B g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (arrows j)) (congrArg.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B) (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) B (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (arrows j)) (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g) (CategoryTheory.Limits.WidePullback.π_arrow.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)))) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) (eq_self.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.hom_eq_lift CategoryTheory.Limits.WidePullback.hom_eq_liftₓ'. -/
 theorem hom_eq_lift (g : X ⟶ widePullback _ _ arrows) :
     g = lift (g ≫ base arrows) (fun j => g ≫ π arrows j) (by tidy) :=
@@ -564,10 +561,7 @@ theorem eq_desc_of_comp_eq (g : widePushout _ _ arrows ⟶ X) :
 #align category_theory.limits.wide_pushout.eq_desc_of_comp_eq CategoryTheory.Limits.WidePushout.eq_desc_of_comp_eq
 
 /- warning: category_theory.limits.wide_pushout.hom_eq_desc -> CategoryTheory.Limits.WidePushout.hom_eq_desc is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (g : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g (CategoryTheory.Limits.WidePushout.desc.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (fun (j : J) => CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g) (fun (j : J) => Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (fun (_a : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) _a (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (Eq.symm.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.Category.assoc.{u2, u3} C _inst_1 B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)))) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True) (Eq.trans.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True ((fun (a : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (a_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (e_1 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) a a_1) (ᾰ : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (ᾰ_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (e_2 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) ᾰ ᾰ_1) => congr.{succ u2, 1} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) a) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) a_1) ᾰ ᾰ_1 (congr_arg.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) ((Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) -> Prop) a a_1 (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) ((fun (ᾰ : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (ᾰ_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (e_1 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) ᾰ ᾰ_1) (ᾰ_2 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (ᾰ_3 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (e_2 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) ᾰ_2 ᾰ_3) => congr.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X ᾰ) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X ᾰ_1) ᾰ_2 ᾰ_3 (congr_arg.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) ((Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) -> (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X)) ᾰ ᾰ_1 (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.Limits.WidePushout.arrow_ι.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g g (rfl.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (rfl.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (propext (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True (eq_self_iff_true.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))))) trivial)))
-but is expected to have type
-  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (g : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g (CategoryTheory.Limits.WidePushout.desc.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) (fun (j : J) => Eq.mpr.{0} (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (id.{0} (Eq.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (Eq.ndrec.{0, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g)) (fun (_a : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) => Eq.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) _a (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (Eq.refl.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (Eq.symm.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g)) (CategoryTheory.Category.assoc.{u3, u1} C _inst_1 B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g)))) (of_eq_true (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.trans.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True (congrFun.{succ u3, 1} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) => Prop) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (congrArg.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) ((Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) -> Prop) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X)) (congrFun.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (fun (a._@.Mathlib.CategoryTheory.Category.Basic._hyg.118 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) => Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j))) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (congrArg.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) ((Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) -> (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (CategoryTheory.Limits.WidePushout.arrow_ι.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (eq_self.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.hom_eq_desc CategoryTheory.Limits.WidePushout.hom_eq_descₓ'. -/
 theorem hom_eq_desc (g : widePushout _ _ arrows ⟶ X) :
     g =
Diff
@@ -379,7 +379,7 @@ lean 3 declaration is
 but is expected to have type
   forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) B (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (arrows j)) (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.π_arrow CategoryTheory.Limits.WidePullback.π_arrowₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem π_arrow (j : J) : π arrows j ≫ arrows _ = base arrows := by
   apply limit.w (wide_pullback_shape.wide_cospan _ _ _) (wide_pullback_shape.hom.term j)
 #align category_theory.limits.wide_pullback.π_arrow CategoryTheory.Limits.WidePullback.π_arrow
@@ -404,7 +404,7 @@ lean 3 declaration is
 but is expected to have type
   forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (fs j) (arrows j)) f) (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2) (objs j) (CategoryTheory.Limits.WidePullback.lift.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w) (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (fs j)
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.lift_π CategoryTheory.Limits.WidePullback.lift_πₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem lift_π (j : J) : lift f fs w ≫ π arrows j = fs _ :=
   by
   simp
@@ -417,7 +417,7 @@ lean 3 declaration is
 but is expected to have type
   forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (fs j) (arrows j)) f), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2) B (CategoryTheory.Limits.WidePullback.lift.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w) (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) f
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.lift_base CategoryTheory.Limits.WidePullback.lift_baseₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem lift_base : lift f fs w ≫ base arrows = f :=
   by
   simp
@@ -500,7 +500,7 @@ lean 3 declaration is
 but is expected to have type
   forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.arrow_ι CategoryTheory.Limits.WidePushout.arrow_ιₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem arrow_ι (j : J) : arrows j ≫ ι arrows j = head arrows := by
   apply colimit.w (wide_pushout_shape.wide_span _ _ _) (wide_pushout_shape.hom.init j)
 #align category_theory.limits.wide_pushout.arrow_ι CategoryTheory.Limits.WidePushout.arrow_ι
@@ -525,7 +525,7 @@ lean 3 declaration is
 but is expected to have type
   forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (fs j)) f) (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (CategoryTheory.Limits.WidePushout.desc.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w)) (fs j)
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.ι_desc CategoryTheory.Limits.WidePushout.ι_descₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem ι_desc (j : J) : ι arrows j ≫ desc f fs w = fs _ :=
   by
   simp
@@ -538,7 +538,7 @@ lean 3 declaration is
 but is expected to have type
   forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (fs j)) f), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.Limits.WidePushout.desc.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w)) f
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.head_desc CategoryTheory.Limits.WidePushout.head_descₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem head_desc : head arrows ≫ desc f fs w = f :=
   by
   simp
Diff
@@ -567,7 +567,7 @@ theorem eq_desc_of_comp_eq (g : widePushout _ _ arrows ⟶ X) :
 lean 3 declaration is
   forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (g : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g (CategoryTheory.Limits.WidePushout.desc.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (fun (j : J) => CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g) (fun (j : J) => Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (fun (_a : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) _a (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (Eq.symm.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.Category.assoc.{u2, u3} C _inst_1 B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)))) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True) (Eq.trans.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True ((fun (a : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (a_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (e_1 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) a a_1) (ᾰ : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (ᾰ_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (e_2 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) ᾰ ᾰ_1) => congr.{succ u2, 1} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) a) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) a_1) ᾰ ᾰ_1 (congr_arg.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) ((Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) -> Prop) a a_1 (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) ((fun (ᾰ : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (ᾰ_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (e_1 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) ᾰ ᾰ_1) (ᾰ_2 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (ᾰ_3 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (e_2 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) ᾰ_2 ᾰ_3) => congr.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X ᾰ) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X ᾰ_1) ᾰ_2 ᾰ_3 (congr_arg.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) ((Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) -> (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X)) ᾰ ᾰ_1 (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.Limits.WidePushout.arrow_ι.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g g (rfl.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (rfl.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (propext (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True (eq_self_iff_true.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))))) trivial)))
 but is expected to have type
-  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (g : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g (CategoryTheory.Limits.WidePushout.desc.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) (fun (j : J) => Eq.mpr.{0} (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (id.{0} (Eq.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (Eq.ndrec.{0, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g)) (fun (_a : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) => Eq.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) _a (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (Eq.refl.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (Eq.symm.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g)) (CategoryTheory.Category.assoc.{u3, u1} C _inst_1 B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g)))) (of_eq_true (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.trans.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True (congrFun.{succ u3, 1} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) => Prop) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (congrArg.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) ((Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) -> Prop) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X)) (congrFun.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (fun (a._@.Mathlib.CategoryTheory.Category.Basic._hyg.115 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) => Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j))) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (congrArg.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) ((Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) -> (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (CategoryTheory.Limits.WidePushout.arrow_ι.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (eq_self.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))))))
+  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (g : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g (CategoryTheory.Limits.WidePushout.desc.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) (fun (j : J) => Eq.mpr.{0} (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (id.{0} (Eq.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (Eq.ndrec.{0, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g)) (fun (_a : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) => Eq.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) _a (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (Eq.refl.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (Eq.symm.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g)) (CategoryTheory.Category.assoc.{u3, u1} C _inst_1 B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g)))) (of_eq_true (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.trans.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True (congrFun.{succ u3, 1} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) => Prop) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (congrArg.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) ((Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) -> Prop) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X)) (congrFun.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (fun (a._@.Mathlib.CategoryTheory.Category.Basic._hyg.118 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) => Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j))) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (congrArg.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) ((Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) -> (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (CategoryTheory.Limits.WidePushout.arrow_ι.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (eq_self.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))))))
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.hom_eq_desc CategoryTheory.Limits.WidePushout.hom_eq_descₓ'. -/
 theorem hom_eq_desc (g : widePushout _ _ arrows ⟶ X) :
     g =
Diff
@@ -727,7 +727,7 @@ def widePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape
 /-- If a category has wide pullbacks on a higher universe level it also has wide pullbacks
 on a lower universe level. -/
 theorem hasWidePullbacks_shrink [HasWidePullbacks.{max w w'} C] : HasWidePullbacks.{w} C := fun J =>
-  hasLimitsOfShapeOfEquivalence (WidePullbackShape.equivalenceOfEquiv _ Equiv.ulift.{w'})
+  hasLimitsOfShape_of_equivalence (WidePullbackShape.equivalenceOfEquiv _ Equiv.ulift.{w'})
 #align category_theory.limits.has_wide_pullbacks_shrink CategoryTheory.Limits.hasWidePullbacks_shrink
 -/
 
Diff
@@ -186,7 +186,7 @@ def equivalenceOfEquiv (J' : Type w') (h : J ≃ J') : WidePullbackShape J ≌ W
 lean 3 declaration is
   forall {J : Type.{u1}}, CategoryTheory.Equivalence.{max u2 u1, max u1 u2, max u1 u2, max u1 u2} (CategoryTheory.ULiftHom.{u2, max u1 u2} (ULift.{u2, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J))) (CategoryTheory.ULiftHom.category.{u1, u2, max u1 u2} (ULift.{u2, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J)) (CategoryTheory.uliftCategory.{u1, u1, u2} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) (CategoryTheory.Limits.WidePullbackShape.{max u1 u2} (ULift.{u2, u1} J)) (CategoryTheory.Limits.WidePullbackShape.category.{max u1 u2} (ULift.{u2, u1} J))
 but is expected to have type
-  forall {J : Type.{u1}}, CategoryTheory.Equivalence.{max u1 u2, max u1 u2, max u2 u1, max u1 u2} (CategoryTheory.ULiftHom.{u2, max u2 u1} (ULift.{u2, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J))) (CategoryTheory.Limits.WidePullbackShape.{max u1 u2} (ULift.{u2, u1} J)) (CategoryTheory.instCategoryULiftHom.{u1, u2, max u1 u2} (ULift.{u2, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J)) (CategoryTheory.uliftCategory.{u1, u1, u2} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) (CategoryTheory.Limits.WidePullbackShape.category.{max u1 u2} (ULift.{u2, u1} J))
+  forall {J : Type.{u1}}, CategoryTheory.Equivalence.{max u1 u2, max u1 u2, max u2 u1, max u1 u2} (CategoryTheory.ULiftHom.{u2, max u2 u1} (ULift.{u2, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J))) (CategoryTheory.Limits.WidePullbackShape.{max u1 u2} (ULift.{u2, u1} J)) (CategoryTheory.ULiftHom.category.{u1, u2, max u1 u2} (ULift.{u2, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J)) (CategoryTheory.uliftCategory.{u1, u1, u2} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) (CategoryTheory.Limits.WidePullbackShape.category.{max u1 u2} (ULift.{u2, u1} J))
 Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback_shape.ulift_equivalence CategoryTheory.Limits.WidePullbackShape.uliftEquivalenceₓ'. -/
 /-- Lifting universe and morphism levels preserves wide pullback diagrams. -/
 def uliftEquivalence :
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Bhavik Mehta, Jakob von Raumer
 
 ! This file was ported from Lean 3 source module category_theory.limits.shapes.wide_pullbacks
-! leanprover-community/mathlib commit f187f1074fa1857c94589cc653c786cadc4c35ff
+! leanprover-community/mathlib commit 832f7b9162039c28b9361289c8681f155cae758f
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.CategoryTheory.Thin
 /-!
 # Wide pullbacks
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 We define the category `wide_pullback_shape`, (resp. `wide_pushout_shape`) which is the category
 obtained from a discrete category of type `J` by adjoining a terminal (resp. initial) element.
 Limits of this shape are wide pullbacks (pushouts).
Diff
@@ -38,29 +38,36 @@ namespace CategoryTheory.Limits
 
 variable (J : Type w)
 
+#print CategoryTheory.Limits.WidePullbackShape /-
 /-- A wide pullback shape for any type `J` can be written simply as `option J`. -/
 def WidePullbackShape :=
   Option J deriving Inhabited
 #align category_theory.limits.wide_pullback_shape CategoryTheory.Limits.WidePullbackShape
+-/
 
+#print CategoryTheory.Limits.WidePushoutShape /-
 /-- A wide pushout shape for any type `J` can be written simply as `option J`. -/
 def WidePushoutShape :=
   Option J deriving Inhabited
 #align category_theory.limits.wide_pushout_shape CategoryTheory.Limits.WidePushoutShape
+-/
 
 namespace WidePullbackShape
 
 variable {J}
 
+#print CategoryTheory.Limits.WidePullbackShape.Hom /-
 /-- The type of arrows for the shape indexing a wide pullback. -/
 inductive Hom : WidePullbackShape J → WidePullbackShape J → Type w
   | id : ∀ X, hom X X
   | term : ∀ j : J, hom (some j) none
   deriving DecidableEq
 #align category_theory.limits.wide_pullback_shape.hom CategoryTheory.Limits.WidePullbackShape.Hom
+-/
 
 attribute [nolint unused_arguments] hom.decidable_eq
 
+#print CategoryTheory.Limits.WidePullbackShape.struct /-
 instance struct : CategoryStruct (WidePullbackShape J)
     where
   Hom := Hom
@@ -71,27 +78,37 @@ instance struct : CategoryStruct (WidePullbackShape J)
     cases g
     apply hom.term _
 #align category_theory.limits.wide_pullback_shape.struct CategoryTheory.Limits.WidePullbackShape.struct
+-/
 
+#print CategoryTheory.Limits.WidePullbackShape.Hom.inhabited /-
 instance Hom.inhabited : Inhabited (Hom none none) :=
   ⟨Hom.id (none : WidePullbackShape J)⟩
 #align category_theory.limits.wide_pullback_shape.hom.inhabited CategoryTheory.Limits.WidePullbackShape.Hom.inhabited
+-/
 
 attribute [local tidy] tactic.case_bash
 
+#print CategoryTheory.Limits.WidePullbackShape.subsingleton_hom /-
 instance subsingleton_hom : Quiver.IsThin (WidePullbackShape J) := fun _ _ => ⟨by tidy⟩
 #align category_theory.limits.wide_pullback_shape.subsingleton_hom CategoryTheory.Limits.WidePullbackShape.subsingleton_hom
+-/
 
+#print CategoryTheory.Limits.WidePullbackShape.category /-
 instance category : SmallCategory (WidePullbackShape J) :=
   thin_category
 #align category_theory.limits.wide_pullback_shape.category CategoryTheory.Limits.WidePullbackShape.category
+-/
 
+#print CategoryTheory.Limits.WidePullbackShape.hom_id /-
 @[simp]
 theorem hom_id (X : WidePullbackShape J) : Hom.id X = 𝟙 X :=
   rfl
 #align category_theory.limits.wide_pullback_shape.hom_id CategoryTheory.Limits.WidePullbackShape.hom_id
+-/
 
 variable {C : Type u} [Category.{v} C]
 
+#print CategoryTheory.Limits.WidePullbackShape.wideCospan /-
 /-- Construct a functor out of the wide pullback shape given a J-indexed collection of arrows to a
 fixed object.
 -/
@@ -109,13 +126,26 @@ def wideCospan (B : C) (objs : J → C) (arrows : ∀ j : J, objs j ⟶ B) : Wid
     cases g
     simp
 #align category_theory.limits.wide_pullback_shape.wide_cospan CategoryTheory.Limits.WidePullbackShape.wideCospan
+-/
 
+/- warning: category_theory.limits.wide_pullback_shape.diagram_iso_wide_cospan -> CategoryTheory.Limits.WidePullbackShape.diagramIsoWideCospan is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1), CategoryTheory.Iso.{max u1 u2, max u1 u2 u1 u3} (CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1) (CategoryTheory.Functor.category.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1) F (CategoryTheory.Limits.WidePullbackShape.wideCospan.{u1, u2, u3} J C _inst_1 (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J)) (fun (j : J) => CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j)) (fun (j : J) => CategoryTheory.Functor.map.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j) (Option.none.{u1} J) (CategoryTheory.Limits.WidePullbackShape.Hom.term.{u1} J j)))
+but is expected to have type
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1), CategoryTheory.Iso.{max u2 u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1) (CategoryTheory.Functor.category.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1) F (CategoryTheory.Limits.WidePullbackShape.wideCospan.{u1, u2, u3} J C _inst_1 (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J)) (fun (j : J) => Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j)) (fun (j : J) => Prefunctor.map.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j) (Option.none.{u1} J) (CategoryTheory.Limits.WidePullbackShape.Hom.term.{u1} J j)))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback_shape.diagram_iso_wide_cospan CategoryTheory.Limits.WidePullbackShape.diagramIsoWideCospanₓ'. -/
 /-- Every diagram is naturally isomorphic (actually, equal) to a `wide_cospan` -/
 def diagramIsoWideCospan (F : WidePullbackShape J ⥤ C) :
     F ≅ wideCospan (F.obj none) (fun j => F.obj (some j)) fun j => F.map (Hom.term j) :=
   (NatIso.ofComponents fun j => eqToIso <| by tidy) <| by tidy
 #align category_theory.limits.wide_pullback_shape.diagram_iso_wide_cospan CategoryTheory.Limits.WidePullbackShape.diagramIsoWideCospan
 
+/- warning: category_theory.limits.wide_pullback_shape.mk_cone -> CategoryTheory.Limits.WidePullbackShape.mkCone is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1} {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J))) (π : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j))), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J))) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j)) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J)) (π j) (CategoryTheory.Functor.map.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j) (Option.none.{u1} J) (CategoryTheory.Limits.WidePullbackShape.Hom.term.{u1} J j))) f) -> (CategoryTheory.Limits.Cone.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F)
+but is expected to have type
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1} {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J))) (π : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j))), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J))) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j)) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J)) (π j) (Prefunctor.map.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j) (Option.none.{u1} J) (CategoryTheory.Limits.WidePullbackShape.Hom.term.{u1} J j))) f) -> (CategoryTheory.Limits.Cone.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 F)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback_shape.mk_cone CategoryTheory.Limits.WidePullbackShape.mkConeₓ'. -/
 /-- Construct a cone over a wide cospan. -/
 @[simps]
 def mkCone {F : WidePullbackShape J ⥤ C} {X : C} (f : X ⟶ F.obj none) (π : ∀ j, X ⟶ F.obj (some j))
@@ -130,6 +160,12 @@ def mkCone {F : WidePullbackShape J ⥤ C} {X : C} (f : X ⟶ F.obj none) (π :
           cases j <;> cases j' <;> cases f <;> unfold_aux <;> dsimp <;> simp [w] } }
 #align category_theory.limits.wide_pullback_shape.mk_cone CategoryTheory.Limits.WidePullbackShape.mkCone
 
+/- warning: category_theory.limits.wide_pullback_shape.equivalence_of_equiv -> CategoryTheory.Limits.WidePullbackShape.equivalenceOfEquiv is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} (J' : Type.{u2}), (Equiv.{succ u1, succ u2} J J') -> (CategoryTheory.Equivalence.{u1, u2, u1, u2} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) (CategoryTheory.Limits.WidePullbackShape.{u2} J') (CategoryTheory.Limits.WidePullbackShape.category.{u2} J'))
+but is expected to have type
+  forall {J : Type.{u1}} (J' : Type.{u2}), (Equiv.{succ u1, succ u2} J J') -> (CategoryTheory.Equivalence.{u1, u2, u1, u2} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.{u2} J') (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u2} J'))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback_shape.equivalence_of_equiv CategoryTheory.Limits.WidePullbackShape.equivalenceOfEquivₓ'. -/
 /-- Wide pullback diagrams of equivalent index types are equivlent. -/
 def equivalenceOfEquiv (J' : Type w') (h : J ≃ J') : WidePullbackShape J ≌ WidePullbackShape J'
     where
@@ -143,6 +179,12 @@ def equivalenceOfEquiv (J' : Type w') (h : J ≃ J') : WidePullbackShape J ≌ W
       simp only [eq_iff_true_of_subsingleton]
 #align category_theory.limits.wide_pullback_shape.equivalence_of_equiv CategoryTheory.Limits.WidePullbackShape.equivalenceOfEquiv
 
+/- warning: category_theory.limits.wide_pullback_shape.ulift_equivalence -> CategoryTheory.Limits.WidePullbackShape.uliftEquivalence is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}}, CategoryTheory.Equivalence.{max u2 u1, max u1 u2, max u1 u2, max u1 u2} (CategoryTheory.ULiftHom.{u2, max u1 u2} (ULift.{u2, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J))) (CategoryTheory.ULiftHom.category.{u1, u2, max u1 u2} (ULift.{u2, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J)) (CategoryTheory.uliftCategory.{u1, u1, u2} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) (CategoryTheory.Limits.WidePullbackShape.{max u1 u2} (ULift.{u2, u1} J)) (CategoryTheory.Limits.WidePullbackShape.category.{max u1 u2} (ULift.{u2, u1} J))
+but is expected to have type
+  forall {J : Type.{u1}}, CategoryTheory.Equivalence.{max u1 u2, max u1 u2, max u2 u1, max u1 u2} (CategoryTheory.ULiftHom.{u2, max u2 u1} (ULift.{u2, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J))) (CategoryTheory.Limits.WidePullbackShape.{max u1 u2} (ULift.{u2, u1} J)) (CategoryTheory.instCategoryULiftHom.{u1, u2, max u1 u2} (ULift.{u2, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J)) (CategoryTheory.uliftCategory.{u1, u1, u2} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J))) (CategoryTheory.Limits.WidePullbackShape.category.{max u1 u2} (ULift.{u2, u1} J))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback_shape.ulift_equivalence CategoryTheory.Limits.WidePullbackShape.uliftEquivalenceₓ'. -/
 /-- Lifting universe and morphism levels preserves wide pullback diagrams. -/
 def uliftEquivalence :
     ULiftHom.{w'} (ULift.{w'} (WidePullbackShape J)) ≌ WidePullbackShape (ULift J) :=
@@ -156,15 +198,18 @@ namespace WidePushoutShape
 
 variable {J}
 
+#print CategoryTheory.Limits.WidePushoutShape.Hom /-
 /-- The type of arrows for the shape indexing a wide psuhout. -/
 inductive Hom : WidePushoutShape J → WidePushoutShape J → Type w
   | id : ∀ X, hom X X
   | init : ∀ j : J, hom none (some j)
   deriving DecidableEq
 #align category_theory.limits.wide_pushout_shape.hom CategoryTheory.Limits.WidePushoutShape.Hom
+-/
 
 attribute [nolint unused_arguments] hom.decidable_eq
 
+#print CategoryTheory.Limits.WidePushoutShape.struct /-
 instance struct : CategoryStruct (WidePushoutShape J)
     where
   Hom := Hom
@@ -175,27 +220,37 @@ instance struct : CategoryStruct (WidePushoutShape J)
     cases g
     apply hom.init _
 #align category_theory.limits.wide_pushout_shape.struct CategoryTheory.Limits.WidePushoutShape.struct
+-/
 
+#print CategoryTheory.Limits.WidePushoutShape.Hom.inhabited /-
 instance Hom.inhabited : Inhabited (Hom none none) :=
   ⟨Hom.id (none : WidePushoutShape J)⟩
 #align category_theory.limits.wide_pushout_shape.hom.inhabited CategoryTheory.Limits.WidePushoutShape.Hom.inhabited
+-/
 
 attribute [local tidy] tactic.case_bash
 
+#print CategoryTheory.Limits.WidePushoutShape.subsingleton_hom /-
 instance subsingleton_hom : Quiver.IsThin (WidePushoutShape J) := fun _ _ => ⟨by tidy⟩
 #align category_theory.limits.wide_pushout_shape.subsingleton_hom CategoryTheory.Limits.WidePushoutShape.subsingleton_hom
+-/
 
+#print CategoryTheory.Limits.WidePushoutShape.category /-
 instance category : SmallCategory (WidePushoutShape J) :=
   thin_category
 #align category_theory.limits.wide_pushout_shape.category CategoryTheory.Limits.WidePushoutShape.category
+-/
 
+#print CategoryTheory.Limits.WidePushoutShape.hom_id /-
 @[simp]
 theorem hom_id (X : WidePushoutShape J) : Hom.id X = 𝟙 X :=
   rfl
 #align category_theory.limits.wide_pushout_shape.hom_id CategoryTheory.Limits.WidePushoutShape.hom_id
+-/
 
 variable {C : Type u} [Category.{v} C]
 
+#print CategoryTheory.Limits.WidePushoutShape.wideSpan /-
 /-- Construct a functor out of the wide pushout shape given a J-indexed collection of arrows from a
 fixed object.
 -/
@@ -209,13 +264,26 @@ def wideSpan (B : C) (objs : J → C) (arrows : ∀ j : J, B ⟶ objs j) : WideP
     · exact arrows j
   map_comp' := by rintro (_ | _) (_ | _) (_ | _) (_ | _) (_ | _) <;> first |simpa|simp
 #align category_theory.limits.wide_pushout_shape.wide_span CategoryTheory.Limits.WidePushoutShape.wideSpan
+-/
 
+/- warning: category_theory.limits.wide_pushout_shape.diagram_iso_wide_span -> CategoryTheory.Limits.WidePushoutShape.diagramIsoWideSpan is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1), CategoryTheory.Iso.{max u1 u2, max u1 u2 u1 u3} (CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1) (CategoryTheory.Functor.category.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1) F (CategoryTheory.Limits.WidePushoutShape.wideSpan.{u1, u2, u3} J C _inst_1 (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J)) (fun (j : J) => CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j)) (fun (j : J) => CategoryTheory.Functor.map.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J) (Option.some.{u1} J j) (CategoryTheory.Limits.WidePushoutShape.Hom.init.{u1} J j)))
+but is expected to have type
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1), CategoryTheory.Iso.{max u2 u1, max (max u3 u2) u1} (CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1) (CategoryTheory.Functor.category.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1) F (CategoryTheory.Limits.WidePushoutShape.wideSpan.{u1, u2, u3} J C _inst_1 (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J)) (fun (j : J) => Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j)) (fun (j : J) => Prefunctor.map.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J) (Option.some.{u1} J j) (CategoryTheory.Limits.WidePushoutShape.Hom.init.{u1} J j)))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout_shape.diagram_iso_wide_span CategoryTheory.Limits.WidePushoutShape.diagramIsoWideSpanₓ'. -/
 /-- Every diagram is naturally isomorphic (actually, equal) to a `wide_span` -/
 def diagramIsoWideSpan (F : WidePushoutShape J ⥤ C) :
     F ≅ wideSpan (F.obj none) (fun j => F.obj (some j)) fun j => F.map (Hom.init j) :=
   (NatIso.ofComponents fun j => eqToIso <| by tidy) <| by tidy
 #align category_theory.limits.wide_pushout_shape.diagram_iso_wide_span CategoryTheory.Limits.WidePushoutShape.diagramIsoWideSpan
 
+/- warning: category_theory.limits.wide_pushout_shape.mk_cocone -> CategoryTheory.Limits.WidePushoutShape.mkCocone is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1} {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J)) X) (ι : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j)) X), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J)) X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J)) (CategoryTheory.Functor.obj.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.some.{u1} J j)) X (CategoryTheory.Functor.map.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F (Option.none.{u1} J) (Option.some.{u1} J j) (CategoryTheory.Limits.WidePushoutShape.Hom.init.{u1} J j)) (ι j)) f) -> (CategoryTheory.Limits.Cocone.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F)
+but is expected to have type
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1} {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J)) X) (ι : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j)) X), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J)) X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J)) (Prefunctor.obj.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.some.{u1} J j)) X (Prefunctor.map.{succ u1, succ u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F) (Option.none.{u1} J) (Option.some.{u1} J j) (CategoryTheory.Limits.WidePushoutShape.Hom.init.{u1} J j)) (ι j)) f) -> (CategoryTheory.Limits.Cocone.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J) C _inst_1 F)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout_shape.mk_cocone CategoryTheory.Limits.WidePushoutShape.mkCoconeₓ'. -/
 /-- Construct a cocone over a wide span. -/
 @[simps]
 def mkCocone {F : WidePushoutShape J ⥤ C} {X : C} (f : F.obj none ⟶ X) (ι : ∀ j, F.obj (some j) ⟶ X)
@@ -234,39 +302,51 @@ end WidePushoutShape
 
 variable (C : Type u) [Category.{v} C]
 
+#print CategoryTheory.Limits.HasWidePullbacks /-
 /-- `has_wide_pullbacks` represents a choice of wide pullback for every collection of morphisms -/
 abbrev HasWidePullbacks : Prop :=
   ∀ J : Type w, HasLimitsOfShape (WidePullbackShape J) C
 #align category_theory.limits.has_wide_pullbacks CategoryTheory.Limits.HasWidePullbacks
+-/
 
+#print CategoryTheory.Limits.HasWidePushouts /-
 /-- `has_wide_pushouts` represents a choice of wide pushout for every collection of morphisms -/
 abbrev HasWidePushouts : Prop :=
   ∀ J : Type w, HasColimitsOfShape (WidePushoutShape J) C
 #align category_theory.limits.has_wide_pushouts CategoryTheory.Limits.HasWidePushouts
+-/
 
 variable {C J}
 
+#print CategoryTheory.Limits.HasWidePullback /-
 /-- `has_wide_pullback B objs arrows` means that `wide_cospan B objs arrows` has a limit. -/
 abbrev HasWidePullback (B : C) (objs : J → C) (arrows : ∀ j : J, objs j ⟶ B) : Prop :=
   HasLimit (WidePullbackShape.wideCospan B objs arrows)
 #align category_theory.limits.has_wide_pullback CategoryTheory.Limits.HasWidePullback
+-/
 
+#print CategoryTheory.Limits.HasWidePushout /-
 /-- `has_wide_pushout B objs arrows` means that `wide_span B objs arrows` has a colimit. -/
 abbrev HasWidePushout (B : C) (objs : J → C) (arrows : ∀ j : J, B ⟶ objs j) : Prop :=
   HasColimit (WidePushoutShape.wideSpan B objs arrows)
 #align category_theory.limits.has_wide_pushout CategoryTheory.Limits.HasWidePushout
+-/
 
+#print CategoryTheory.Limits.widePullback /-
 /-- A choice of wide pullback. -/
 noncomputable abbrev widePullback (B : C) (objs : J → C) (arrows : ∀ j : J, objs j ⟶ B)
     [HasWidePullback B objs arrows] : C :=
   limit (WidePullbackShape.wideCospan B objs arrows)
 #align category_theory.limits.wide_pullback CategoryTheory.Limits.widePullback
+-/
 
+#print CategoryTheory.Limits.widePushout /-
 /-- A choice of wide pushout. -/
 noncomputable abbrev widePushout (B : C) (objs : J → C) (arrows : ∀ j : J, B ⟶ objs j)
     [HasWidePushout B objs arrows] : C :=
   colimit (WidePushoutShape.wideSpan B objs arrows)
 #align category_theory.limits.wide_pushout CategoryTheory.Limits.widePushout
+-/
 
 variable (C)
 
@@ -276,47 +356,77 @@ variable {C} {B : C} {objs : J → C} (arrows : ∀ j : J, objs j ⟶ B)
 
 variable [HasWidePullback B objs arrows]
 
+#print CategoryTheory.Limits.WidePullback.π /-
 /-- The `j`-th projection from the pullback. -/
 noncomputable abbrev π (j : J) : widePullback _ _ arrows ⟶ objs j :=
   limit.π (WidePullbackShape.wideCospan _ _ _) (Option.some j)
-#align category_theory.limits.wide_pullback.π CategoryTheory.Limits.widePullback.π
+#align category_theory.limits.wide_pullback.π CategoryTheory.Limits.WidePullback.π
+-/
 
+#print CategoryTheory.Limits.WidePullback.base /-
 /-- The unique map to the base from the pullback. -/
 noncomputable abbrev base : widePullback _ _ arrows ⟶ B :=
   limit.π (WidePullbackShape.wideCospan _ _ _) Option.none
-#align category_theory.limits.wide_pullback.base CategoryTheory.Limits.widePullback.base
+#align category_theory.limits.wide_pullback.base CategoryTheory.Limits.WidePullback.base
+-/
 
+/- warning: category_theory.limits.wide_pullback.π_arrow -> CategoryTheory.Limits.WidePullback.π_arrow is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u1, u2, u3} J C _inst_1 B objs arrows] (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) B (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (arrows j)) (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)
+but is expected to have type
+  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) B (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (arrows j)) (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.π_arrow CategoryTheory.Limits.WidePullback.π_arrowₓ'. -/
 @[simp, reassoc.1]
 theorem π_arrow (j : J) : π arrows j ≫ arrows _ = base arrows := by
   apply limit.w (wide_pullback_shape.wide_cospan _ _ _) (wide_pullback_shape.hom.term j)
-#align category_theory.limits.wide_pullback.π_arrow CategoryTheory.Limits.widePullback.π_arrow
+#align category_theory.limits.wide_pullback.π_arrow CategoryTheory.Limits.WidePullback.π_arrow
 
 variable {arrows}
 
+#print CategoryTheory.Limits.WidePullback.lift /-
 /-- Lift a collection of morphisms to a morphism to the pullback. -/
 noncomputable abbrev lift {X : C} (f : X ⟶ B) (fs : ∀ j : J, X ⟶ objs j)
     (w : ∀ j, fs j ≫ arrows j = f) : X ⟶ widePullback _ _ arrows :=
   limit.lift (WidePullbackShape.wideCospan _ _ _) (WidePullbackShape.mkCone f fs <| w)
-#align category_theory.limits.wide_pullback.lift CategoryTheory.Limits.widePullback.lift
+#align category_theory.limits.wide_pullback.lift CategoryTheory.Limits.WidePullback.lift
+-/
 
 variable (arrows)
 
 variable {X : C} (f : X ⟶ B) (fs : ∀ j : J, X ⟶ objs j) (w : ∀ j, fs j ≫ arrows j = f)
 
+/- warning: category_theory.limits.wide_pullback.lift_π -> CategoryTheory.Limits.WidePullback.lift_π is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (fs j) (arrows j)) f) (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (objs j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2) (objs j) (CategoryTheory.Limits.WidePullback.lift.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w) (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (fs j)
+but is expected to have type
+  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (fs j) (arrows j)) f) (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2) (objs j) (CategoryTheory.Limits.WidePullback.lift.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w) (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (fs j)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.lift_π CategoryTheory.Limits.WidePullback.lift_πₓ'. -/
 @[simp, reassoc.1]
 theorem lift_π (j : J) : lift f fs w ≫ π arrows j = fs _ :=
   by
   simp
   rfl
-#align category_theory.limits.wide_pullback.lift_π CategoryTheory.Limits.widePullback.lift_π
-
+#align category_theory.limits.wide_pullback.lift_π CategoryTheory.Limits.WidePullback.lift_π
+
+/- warning: category_theory.limits.wide_pullback.lift_base -> CategoryTheory.Limits.WidePullback.lift_base is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (fs j) (arrows j)) f), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2) B (CategoryTheory.Limits.WidePullback.lift.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w) (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) f
+but is expected to have type
+  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (fs j) (arrows j)) f), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2) B (CategoryTheory.Limits.WidePullback.lift.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w) (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) f
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.lift_base CategoryTheory.Limits.WidePullback.lift_baseₓ'. -/
 @[simp, reassoc.1]
 theorem lift_base : lift f fs w ≫ base arrows = f :=
   by
   simp
   rfl
-#align category_theory.limits.wide_pullback.lift_base CategoryTheory.Limits.widePullback.lift_base
-
+#align category_theory.limits.wide_pullback.lift_base CategoryTheory.Limits.WidePullback.lift_base
+
+/- warning: category_theory.limits.wide_pullback.eq_lift_of_comp_eq -> CategoryTheory.Limits.WidePullback.eq_lift_of_comp_eq is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (fs j) (arrows j)) f) (g : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (objs j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (fs j)) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) f) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) g (CategoryTheory.Limits.WidePullback.lift.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w))
+but is expected to have type
+  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (fs j) (arrows j)) f) (g : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)), (forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (fs j)) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) f) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) g (CategoryTheory.Limits.WidePullback.lift.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.eq_lift_of_comp_eq CategoryTheory.Limits.WidePullback.eq_lift_of_comp_eqₓ'. -/
 theorem eq_lift_of_comp_eq (g : X ⟶ widePullback _ _ arrows) :
     (∀ j : J, g ≫ π arrows j = fs j) → g ≫ base arrows = f → g = lift f fs w :=
   by
@@ -327,15 +437,27 @@ theorem eq_lift_of_comp_eq (g : X ⟶ widePullback _ _ arrows) :
   rintro (_ | _)
   · apply h2
   · apply h1
-#align category_theory.limits.wide_pullback.eq_lift_of_comp_eq CategoryTheory.Limits.widePullback.eq_lift_of_comp_eq
-
+#align category_theory.limits.wide_pullback.eq_lift_of_comp_eq CategoryTheory.Limits.WidePullback.eq_lift_of_comp_eq
+
+/- warning: category_theory.limits.wide_pullback.hom_eq_lift -> CategoryTheory.Limits.WidePullback.hom_eq_lift is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (g : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) g (CategoryTheory.Limits.WidePullback.lift.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (fun (j : J) => CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (fun (j : J) => id.{0} (forall {X : C} (g : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) (fun {X : C} (g : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) (j : J) => Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2))) True (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2))) True) (Eq.trans.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2))) True ((fun (a : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (a_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (e_1 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) a a_1) (ᾰ : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (ᾰ_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (e_2 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) ᾰ ᾰ_1) => congr.{succ u2, 1} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) a) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) a_1) ᾰ ᾰ_1 (congr_arg.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) ((Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) -> Prop) a a_1 (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (Eq.trans.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) B (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) (arrows j))) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.Category.assoc.{u2, u3} C _inst_1 X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) B g (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) (arrows j)) ((fun (ᾰ : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) (ᾰ_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) (e_1 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) ᾰ ᾰ_1) (ᾰ_2 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B) (ᾰ_3 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B) (e_2 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B) ᾰ_2 ᾰ_3) => congr.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B ᾰ) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B ᾰ_1) ᾰ_2 ᾰ_3 (congr_arg.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) ((Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B) -> (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B)) ᾰ ᾰ_1 (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B) e_1) e_2) g g (rfl.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) (objs j) B (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) (arrows j)) (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.Limits.WidePullback.π_arrow.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j))) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)) (rfl.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2)))) (propext (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) True (eq_self_iff_true.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)))))) trivial) X g j))
+but is expected to have type
+  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (g : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) g (CategoryTheory.Limits.WidePullback.lift.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (fun (j : J) => of_eq_true (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) (Eq.trans.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) True (congrFun.{succ u3, 1} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) => Prop) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (arrows j))) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) (congrArg.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) ((Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) -> Prop) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B)) (Eq.trans.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (objs j) B (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (arrows j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) B (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (arrows j))) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.Category.assoc.{u3, u1} C _inst_1 X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) B g (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (arrows j)) (congrArg.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B) (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) B (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (arrows j)) (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g) (CategoryTheory.Limits.WidePullback.π_arrow.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)))) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) (eq_self.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))))))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.hom_eq_lift CategoryTheory.Limits.WidePullback.hom_eq_liftₓ'. -/
 theorem hom_eq_lift (g : X ⟶ widePullback _ _ arrows) :
     g = lift (g ≫ base arrows) (fun j => g ≫ π arrows j) (by tidy) :=
   by
   apply eq_lift_of_comp_eq
   tidy
-#align category_theory.limits.wide_pullback.hom_eq_lift CategoryTheory.Limits.widePullback.hom_eq_lift
-
+#align category_theory.limits.wide_pullback.hom_eq_lift CategoryTheory.Limits.WidePullback.hom_eq_lift
+
+/- warning: category_theory.limits.wide_pullback.hom_ext -> CategoryTheory.Limits.WidePullback.hom_ext is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (g1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (g2 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (objs j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g1 (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g2 (CategoryTheory.Limits.WidePullback.π.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j))) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g1 (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g2 (CategoryTheory.Limits.WidePullback.base.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) g1 g2)
+but is expected to have type
+  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) B) [_inst_2 : CategoryTheory.Limits.HasWidePullback.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (g1 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (g2 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)), (forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (objs j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g1 (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (objs j) g2 (CategoryTheory.Limits.WidePullback.π.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j))) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X B) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g1 (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) B g2 (CategoryTheory.Limits.WidePullback.base.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2))) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X (CategoryTheory.Limits.widePullback.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) g1 g2)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback.hom_ext CategoryTheory.Limits.WidePullback.hom_extₓ'. -/
 @[ext]
 theorem hom_ext (g1 g2 : X ⟶ widePullback _ _ arrows) :
     (∀ j : J, g1 ≫ π arrows j = g2 ≫ π arrows j) → g1 ≫ base arrows = g2 ≫ base arrows → g1 = g2 :=
@@ -345,7 +467,7 @@ theorem hom_ext (g1 g2 : X ⟶ widePullback _ _ arrows) :
   rintro (_ | _)
   · apply h2
   · apply h1
-#align category_theory.limits.wide_pullback.hom_ext CategoryTheory.Limits.widePullback.hom_ext
+#align category_theory.limits.wide_pullback.hom_ext CategoryTheory.Limits.WidePullback.hom_ext
 
 end WidePullback
 
@@ -355,47 +477,77 @@ variable {C} {B : C} {objs : J → C} (arrows : ∀ j : J, B ⟶ objs j)
 
 variable [HasWidePushout B objs arrows]
 
+#print CategoryTheory.Limits.WidePushout.ι /-
 /-- The `j`-th inclusion to the pushout. -/
 noncomputable abbrev ι (j : J) : objs j ⟶ widePushout _ _ arrows :=
   colimit.ι (WidePushoutShape.wideSpan _ _ _) (Option.some j)
-#align category_theory.limits.wide_pushout.ι CategoryTheory.Limits.widePushout.ι
+#align category_theory.limits.wide_pushout.ι CategoryTheory.Limits.WidePushout.ι
+-/
 
+#print CategoryTheory.Limits.WidePushout.head /-
 /-- The unique map from the head to the pushout. -/
 noncomputable abbrev head : B ⟶ widePushout B objs arrows :=
   colimit.ι (WidePushoutShape.wideSpan _ _ _) Option.none
-#align category_theory.limits.wide_pushout.head CategoryTheory.Limits.widePushout.head
+#align category_theory.limits.wide_pushout.head CategoryTheory.Limits.WidePushout.head
+-/
 
+/- warning: category_theory.limits.wide_pushout.arrow_ι -> CategoryTheory.Limits.WidePushout.arrow_ι is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u1, u2, u3} J C _inst_1 B objs arrows] (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)
+but is expected to have type
+  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.arrow_ι CategoryTheory.Limits.WidePushout.arrow_ιₓ'. -/
 @[simp, reassoc.1]
 theorem arrow_ι (j : J) : arrows j ≫ ι arrows j = head arrows := by
   apply colimit.w (wide_pushout_shape.wide_span _ _ _) (wide_pushout_shape.hom.init j)
-#align category_theory.limits.wide_pushout.arrow_ι CategoryTheory.Limits.widePushout.arrow_ι
+#align category_theory.limits.wide_pushout.arrow_ι CategoryTheory.Limits.WidePushout.arrow_ι
 
 variable {arrows}
 
+#print CategoryTheory.Limits.WidePushout.desc /-
 /-- Descend a collection of morphisms to a morphism from the pushout. -/
 noncomputable abbrev desc {X : C} (f : B ⟶ X) (fs : ∀ j : J, objs j ⟶ X)
     (w : ∀ j, arrows j ≫ fs j = f) : widePushout _ _ arrows ⟶ X :=
   colimit.desc (WidePushoutShape.wideSpan B objs arrows) (WidePushoutShape.mkCocone f fs <| w)
-#align category_theory.limits.wide_pushout.desc CategoryTheory.Limits.widePushout.desc
+#align category_theory.limits.wide_pushout.desc CategoryTheory.Limits.WidePushout.desc
+-/
 
 variable (arrows)
 
 variable {X : C} (f : B ⟶ X) (fs : ∀ j : J, objs j ⟶ X) (w : ∀ j, arrows j ≫ fs j = f)
 
+/- warning: category_theory.limits.wide_pushout.ι_desc -> CategoryTheory.Limits.WidePushout.ι_desc is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (fs j)) f) (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (CategoryTheory.Limits.WidePushout.desc.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w)) (fs j)
+but is expected to have type
+  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (fs j)) f) (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) (CategoryTheory.Limits.WidePushout.desc.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w)) (fs j)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.ι_desc CategoryTheory.Limits.WidePushout.ι_descₓ'. -/
 @[simp, reassoc.1]
 theorem ι_desc (j : J) : ι arrows j ≫ desc f fs w = fs _ :=
   by
   simp
   rfl
-#align category_theory.limits.wide_pushout.ι_desc CategoryTheory.Limits.widePushout.ι_desc
-
+#align category_theory.limits.wide_pushout.ι_desc CategoryTheory.Limits.WidePushout.ι_desc
+
+/- warning: category_theory.limits.wide_pushout.head_desc -> CategoryTheory.Limits.WidePushout.head_desc is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (fs j)) f), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.Limits.WidePushout.desc.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w)) f
+but is expected to have type
+  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (fs j)) f), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.Limits.WidePushout.desc.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w)) f
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.head_desc CategoryTheory.Limits.WidePushout.head_descₓ'. -/
 @[simp, reassoc.1]
 theorem head_desc : head arrows ≫ desc f fs w = f :=
   by
   simp
   rfl
-#align category_theory.limits.wide_pushout.head_desc CategoryTheory.Limits.widePushout.head_desc
-
+#align category_theory.limits.wide_pushout.head_desc CategoryTheory.Limits.WidePushout.head_desc
+
+/- warning: category_theory.limits.wide_pushout.eq_desc_of_comp_eq -> CategoryTheory.Limits.WidePushout.eq_desc_of_comp_eq is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (fs j)) f) (g : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) (fs j)) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) f) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g (CategoryTheory.Limits.WidePushout.desc.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X f fs w))
+but is expected to have type
+  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (fs : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (w : forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (fs j)) f) (g : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), (forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) (fs j)) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) f) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g (CategoryTheory.Limits.WidePushout.desc.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) (fun (j : J) => arrows j) _inst_2 X f fs w))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.eq_desc_of_comp_eq CategoryTheory.Limits.WidePushout.eq_desc_of_comp_eqₓ'. -/
 theorem eq_desc_of_comp_eq (g : widePushout _ _ arrows ⟶ X) :
     (∀ j : J, ι arrows j ≫ g = fs j) → head arrows ≫ g = f → g = desc f fs w :=
   by
@@ -406,8 +558,14 @@ theorem eq_desc_of_comp_eq (g : widePushout _ _ arrows ⟶ X) :
   rintro (_ | _)
   · apply h2
   · apply h1
-#align category_theory.limits.wide_pushout.eq_desc_of_comp_eq CategoryTheory.Limits.widePushout.eq_desc_of_comp_eq
-
+#align category_theory.limits.wide_pushout.eq_desc_of_comp_eq CategoryTheory.Limits.WidePushout.eq_desc_of_comp_eq
+
+/- warning: category_theory.limits.wide_pushout.hom_eq_desc -> CategoryTheory.Limits.WidePushout.hom_eq_desc is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (g : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g (CategoryTheory.Limits.WidePushout.desc.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (fun (j : J) => CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g) (fun (j : J) => Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (fun (_a : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) _a (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (Eq.symm.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)) (CategoryTheory.Category.assoc.{u2, u3} C _inst_1 B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g)))) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True (id_tag Tactic.IdTag.simp (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True) (Eq.trans.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True ((fun (a : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (a_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (e_1 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) a a_1) (ᾰ : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (ᾰ_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (e_2 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) ᾰ ᾰ_1) => congr.{succ u2, 1} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) a) (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) a_1) ᾰ ᾰ_1 (congr_arg.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) ((Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) -> Prop) a a_1 (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X)) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) ((fun (ᾰ : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (ᾰ_1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (e_1 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) ᾰ ᾰ_1) (ᾰ_2 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (ᾰ_3 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (e_2 : Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) ᾰ_2 ᾰ_3) => congr.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X ᾰ) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X ᾰ_1) ᾰ_2 ᾰ_3 (congr_arg.{succ u2, succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) ((Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) -> (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X)) ᾰ ᾰ_1 (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) e_1) e_2) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j)) (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.Limits.WidePushout.arrow_ι.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g g (rfl.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (rfl.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (propext (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True (eq_self_iff_true.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))))) trivial)))
+but is expected to have type
+  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (g : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g (CategoryTheory.Limits.WidePushout.desc.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) (fun (j : J) => Eq.mpr.{0} (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (id.{0} (Eq.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (Eq.ndrec.{0, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g)) (fun (_a : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) => Eq.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) _a (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (Eq.refl.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) ((fun (j : J) => CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g) j)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (Eq.symm.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) X (arrows j) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g)) (CategoryTheory.Category.assoc.{u3, u1} C _inst_1 B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g)))) (of_eq_true (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.trans.{1} Prop (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) True (congrFun.{succ u3, 1} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (fun (a._@.Init.Prelude._hyg.170 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) => Prop) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g)) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (congrArg.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) ((Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) -> Prop) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g) (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X)) (congrFun.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (fun (a._@.Mathlib.CategoryTheory.Category.Basic._hyg.115 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) => Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j))) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) (congrArg.{succ u3, succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2)) ((Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) -> (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (arrows j) (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (CategoryTheory.Limits.WidePushout.arrow_ι.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j)) g)) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g)) (eq_self.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g))))))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.hom_eq_desc CategoryTheory.Limits.WidePushout.hom_eq_descₓ'. -/
 theorem hom_eq_desc (g : widePushout _ _ arrows ⟶ X) :
     g =
       desc (head arrows ≫ g) (fun j => ι arrows j ≫ g) fun j =>
@@ -417,8 +575,14 @@ theorem hom_eq_desc (g : widePushout _ _ arrows ⟶ X) :
   by
   apply eq_desc_of_comp_eq
   tidy
-#align category_theory.limits.wide_pushout.hom_eq_desc CategoryTheory.Limits.widePushout.hom_eq_desc
-
+#align category_theory.limits.wide_pushout.hom_eq_desc CategoryTheory.Limits.WidePushout.hom_eq_desc
+
+/- warning: category_theory.limits.wide_pushout.hom_ext -> CategoryTheory.Limits.WidePushout.hom_ext is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u1, u2, u3} J C _inst_1 B objs arrows] {X : C} (g1 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (g2 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (objs j) X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g1) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u1, u2, u3} J C _inst_1 B objs arrows _inst_2 j) g2)) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g1) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) B (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g2)) -> (Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.widePushout.{u1, u2, u3} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g1 g2)
+but is expected to have type
+  forall {J : Type.{u2}} {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] {B : C} {objs : J -> C} (arrows : forall (j : J), Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B (objs j)) [_inst_2 : CategoryTheory.Limits.HasWidePushout.{u2, u3, u1} J C _inst_1 B objs arrows] {X : C} (g1 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) (g2 : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X), (forall (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (objs j) X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g1) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) (objs j) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.ι.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2 j) g2)) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) B X) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g1) (CategoryTheory.CategoryStruct.comp.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1) B (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X (CategoryTheory.Limits.WidePushout.head.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) g2)) -> (Eq.{succ u3} (Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) (CategoryTheory.Limits.widePushout.{u2, u3, u1} J C _inst_1 B (fun (j : J) => objs j) arrows _inst_2) X) g1 g2)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout.hom_ext CategoryTheory.Limits.WidePushout.hom_extₓ'. -/
 @[ext]
 theorem hom_ext (g1 g2 : widePushout _ _ arrows ⟶ X) :
     (∀ j : J, ι arrows j ≫ g1 = ι arrows j ≫ g2) → head arrows ≫ g1 = head arrows ≫ g2 → g1 = g2 :=
@@ -428,12 +592,13 @@ theorem hom_ext (g1 g2 : widePushout _ _ arrows ⟶ X) :
   rintro (_ | _)
   · apply h2
   · apply h1
-#align category_theory.limits.wide_pushout.hom_ext CategoryTheory.Limits.widePushout.hom_ext
+#align category_theory.limits.wide_pushout.hom_ext CategoryTheory.Limits.WidePushout.hom_ext
 
 end WidePushout
 
 variable (J)
 
+#print CategoryTheory.Limits.widePullbackShapeOpMap /-
 /-- The action on morphisms of the obvious functor
   `wide_pullback_shape_op : wide_pullback_shape J ⥤ (wide_pushout_shape J)ᵒᵖ`-/
 def widePullbackShapeOpMap :
@@ -442,7 +607,9 @@ def widePullbackShapeOpMap :
   | _, _, wide_pullback_shape.hom.id X => Quiver.Hom.op (WidePushoutShape.Hom.id _)
   | _, _, wide_pullback_shape.hom.term j => Quiver.Hom.op (WidePushoutShape.Hom.init _)
 #align category_theory.limits.wide_pullback_shape_op_map CategoryTheory.Limits.widePullbackShapeOpMap
+-/
 
+#print CategoryTheory.Limits.widePullbackShapeOp /-
 /-- The obvious functor `wide_pullback_shape J ⥤ (wide_pushout_shape J)ᵒᵖ` -/
 @[simps]
 def widePullbackShapeOp : WidePullbackShape J ⥤ (WidePushoutShape J)ᵒᵖ
@@ -450,7 +617,9 @@ def widePullbackShapeOp : WidePullbackShape J ⥤ (WidePushoutShape J)ᵒᵖ
   obj X := op X
   map := widePullbackShapeOpMap J
 #align category_theory.limits.wide_pullback_shape_op CategoryTheory.Limits.widePullbackShapeOp
+-/
 
+#print CategoryTheory.Limits.widePushoutShapeOpMap /-
 /-- The action on morphisms of the obvious functor
 `wide_pushout_shape_op : `wide_pushout_shape J ⥤ (wide_pullback_shape J)ᵒᵖ` -/
 def widePushoutShapeOpMap :
@@ -459,7 +628,9 @@ def widePushoutShapeOpMap :
   | _, _, wide_pushout_shape.hom.id X => Quiver.Hom.op (WidePullbackShape.Hom.id _)
   | _, _, wide_pushout_shape.hom.init j => Quiver.Hom.op (WidePullbackShape.Hom.term _)
 #align category_theory.limits.wide_pushout_shape_op_map CategoryTheory.Limits.widePushoutShapeOpMap
+-/
 
+#print CategoryTheory.Limits.widePushoutShapeOp /-
 /-- The obvious functor `wide_pushout_shape J ⥤ (wide_pullback_shape J)ᵒᵖ` -/
 @[simps]
 def widePushoutShapeOp : WidePushoutShape J ⥤ (WidePullbackShape J)ᵒᵖ
@@ -467,43 +638,62 @@ def widePushoutShapeOp : WidePushoutShape J ⥤ (WidePullbackShape J)ᵒᵖ
   obj X := op X
   map := widePushoutShapeOpMap J
 #align category_theory.limits.wide_pushout_shape_op CategoryTheory.Limits.widePushoutShapeOp
+-/
 
+#print CategoryTheory.Limits.widePullbackShapeUnop /-
 /-- The obvious functor `(wide_pullback_shape J)ᵒᵖ ⥤ wide_pushout_shape J`-/
 @[simps]
 def widePullbackShapeUnop : (WidePullbackShape J)ᵒᵖ ⥤ WidePushoutShape J :=
   (widePullbackShapeOp J).leftOp
 #align category_theory.limits.wide_pullback_shape_unop CategoryTheory.Limits.widePullbackShapeUnop
+-/
 
+#print CategoryTheory.Limits.widePushoutShapeUnop /-
 /-- The obvious functor `(wide_pushout_shape J)ᵒᵖ ⥤ wide_pullback_shape J` -/
 @[simps]
 def widePushoutShapeUnop : (WidePushoutShape J)ᵒᵖ ⥤ WidePullbackShape J :=
   (widePushoutShapeOp J).leftOp
 #align category_theory.limits.wide_pushout_shape_unop CategoryTheory.Limits.widePushoutShapeUnop
+-/
 
+#print CategoryTheory.Limits.widePushoutShapeOpUnop /-
 /-- The inverse of the unit isomorphism of the equivalence
 `wide_pushout_shape_op_equiv : (wide_pushout_shape J)ᵒᵖ ≌ wide_pullback_shape J` -/
 def widePushoutShapeOpUnop : widePushoutShapeUnop J ⋙ widePullbackShapeOp J ≅ 𝟭 _ :=
   NatIso.ofComponents (fun X => Iso.refl _) fun X Y f => by decide
 #align category_theory.limits.wide_pushout_shape_op_unop CategoryTheory.Limits.widePushoutShapeOpUnop
+-/
 
+#print CategoryTheory.Limits.widePushoutShapeUnopOp /-
 /-- The counit isomorphism of the equivalence
 `wide_pullback_shape_op_equiv : (wide_pullback_shape J)ᵒᵖ ≌ wide_pushout_shape J` -/
 def widePushoutShapeUnopOp : widePushoutShapeOp J ⋙ widePullbackShapeUnop J ≅ 𝟭 _ :=
   NatIso.ofComponents (fun X => Iso.refl _) fun X Y f => by decide
 #align category_theory.limits.wide_pushout_shape_unop_op CategoryTheory.Limits.widePushoutShapeUnopOp
+-/
 
+#print CategoryTheory.Limits.widePullbackShapeOpUnop /-
 /-- The inverse of the unit isomorphism of the equivalence
 `wide_pullback_shape_op_equiv : (wide_pullback_shape J)ᵒᵖ ≌ wide_pushout_shape J` -/
 def widePullbackShapeOpUnop : widePullbackShapeUnop J ⋙ widePushoutShapeOp J ≅ 𝟭 _ :=
   NatIso.ofComponents (fun X => Iso.refl _) fun X Y f => by decide
 #align category_theory.limits.wide_pullback_shape_op_unop CategoryTheory.Limits.widePullbackShapeOpUnop
+-/
 
+#print CategoryTheory.Limits.widePullbackShapeUnopOp /-
 /-- The counit isomorphism of the equivalence
 `wide_pushout_shape_op_equiv : (wide_pushout_shape J)ᵒᵖ ≌ wide_pullback_shape J` -/
 def widePullbackShapeUnopOp : widePullbackShapeOp J ⋙ widePushoutShapeUnop J ≅ 𝟭 _ :=
   NatIso.ofComponents (fun X => Iso.refl _) fun X Y f => by decide
 #align category_theory.limits.wide_pullback_shape_unop_op CategoryTheory.Limits.widePullbackShapeUnopOp
+-/
 
+/- warning: category_theory.limits.wide_pushout_shape_op_equiv -> CategoryTheory.Limits.widePushoutShapeOpEquiv is a dubious translation:
+lean 3 declaration is
+  forall (J : Type.{u1}), CategoryTheory.Equivalence.{u1, u1, u1, u1} (Opposite.{succ u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J)) (CategoryTheory.Category.opposite.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J)) (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J)
+but is expected to have type
+  forall (J : Type.{u1}), CategoryTheory.Equivalence.{u1, u1, u1, u1} (Opposite.{succ u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J)) (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Category.opposite.{u1, u1} (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J)) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pushout_shape_op_equiv CategoryTheory.Limits.widePushoutShapeOpEquivₓ'. -/
 /-- The duality equivalence `(wide_pushout_shape J)ᵒᵖ ≌ wide_pullback_shape J` -/
 @[simps]
 def widePushoutShapeOpEquiv : (WidePushoutShape J)ᵒᵖ ≌ WidePullbackShape J
@@ -514,6 +704,12 @@ def widePushoutShapeOpEquiv : (WidePushoutShape J)ᵒᵖ ≌ WidePullbackShape J
   counitIso := widePullbackShapeUnopOp J
 #align category_theory.limits.wide_pushout_shape_op_equiv CategoryTheory.Limits.widePushoutShapeOpEquiv
 
+/- warning: category_theory.limits.wide_pullback_shape_op_equiv -> CategoryTheory.Limits.widePullbackShapeOpEquiv is a dubious translation:
+lean 3 declaration is
+  forall (J : Type.{u1}), CategoryTheory.Equivalence.{u1, u1, u1, u1} (Opposite.{succ u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J)) (CategoryTheory.Category.opposite.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J)) (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J)
+but is expected to have type
+  forall (J : Type.{u1}), CategoryTheory.Equivalence.{u1, u1, u1, u1} (Opposite.{succ u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J)) (CategoryTheory.Limits.WidePushoutShape.{u1} J) (CategoryTheory.Category.opposite.{u1, u1} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J)) (CategoryTheory.Limits.WidePushoutShape.category.{u1} J)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.wide_pullback_shape_op_equiv CategoryTheory.Limits.widePullbackShapeOpEquivₓ'. -/
 /-- The duality equivalence `(wide_pullback_shape J)ᵒᵖ ≌ wide_pushout_shape J` -/
 @[simps]
 def widePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape J
@@ -524,11 +720,13 @@ def widePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape
   counitIso := widePushoutShapeUnopOp J
 #align category_theory.limits.wide_pullback_shape_op_equiv CategoryTheory.Limits.widePullbackShapeOpEquiv
 
+#print CategoryTheory.Limits.hasWidePullbacks_shrink /-
 /-- If a category has wide pullbacks on a higher universe level it also has wide pullbacks
 on a lower universe level. -/
 theorem hasWidePullbacks_shrink [HasWidePullbacks.{max w w'} C] : HasWidePullbacks.{w} C := fun J =>
   hasLimitsOfShapeOfEquivalence (WidePullbackShape.equivalenceOfEquiv _ Equiv.ulift.{w'})
 #align category_theory.limits.has_wide_pullbacks_shrink CategoryTheory.Limits.hasWidePullbacks_shrink
+-/
 
 end CategoryTheory.Limits
 
Diff
@@ -120,7 +120,7 @@ def diagramIsoWideCospan (F : WidePullbackShape J ⥤ C) :
 @[simps]
 def mkCone {F : WidePullbackShape J ⥤ C} {X : C} (f : X ⟶ F.obj none) (π : ∀ j, X ⟶ F.obj (some j))
     (w : ∀ j, π j ≫ F.map (Hom.term j) = f) : Cone F :=
-  { x
+  { pt
     π :=
       { app := fun j =>
           match j with
@@ -220,7 +220,7 @@ def diagramIsoWideSpan (F : WidePushoutShape J ⥤ C) :
 @[simps]
 def mkCocone {F : WidePushoutShape J ⥤ C} {X : C} (f : F.obj none ⟶ X) (ι : ∀ j, F.obj (some j) ⟶ X)
     (w : ∀ j, F.map (Hom.init j) ≫ ι j = f) : Cocone F :=
-  { x
+  { pt
     ι :=
       { app := fun j =>
           match j with
@@ -527,7 +527,7 @@ def widePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape
 /-- If a category has wide pullbacks on a higher universe level it also has wide pullbacks
 on a lower universe level. -/
 theorem hasWidePullbacks_shrink [HasWidePullbacks.{max w w'} C] : HasWidePullbacks.{w} C := fun J =>
-  hasLimitsOfShape_of_equivalence (WidePullbackShape.equivalenceOfEquiv _ Equiv.ulift.{w'})
+  hasLimitsOfShapeOfEquivalence (WidePullbackShape.equivalenceOfEquiv _ Equiv.ulift.{w'})
 #align category_theory.limits.has_wide_pullbacks_shrink CategoryTheory.Limits.hasWidePullbacks_shrink
 
 end CategoryTheory.Limits
Diff
@@ -527,7 +527,7 @@ def widePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape
 /-- If a category has wide pullbacks on a higher universe level it also has wide pullbacks
 on a lower universe level. -/
 theorem hasWidePullbacks_shrink [HasWidePullbacks.{max w w'} C] : HasWidePullbacks.{w} C := fun J =>
-  hasLimitsOfShapeOfEquivalence (WidePullbackShape.equivalenceOfEquiv _ Equiv.ulift.{w'})
+  hasLimitsOfShape_of_equivalence (WidePullbackShape.equivalenceOfEquiv _ Equiv.ulift.{w'})
 #align category_theory.limits.has_wide_pullbacks_shrink CategoryTheory.Limits.hasWidePullbacks_shrink
 
 end CategoryTheory.Limits

Changes in mathlib4

mathlib3
mathlib4
chore: adapt to multiple goal linter 1 (#12338)

A PR accompanying #12339.

Zulip discussion

Diff
@@ -69,7 +69,7 @@ instance struct : CategoryStruct (WidePullbackShape J) where
   id j := Hom.id j
   comp f g := by
     cases f
-    exact g
+    · exact g
     cases g
     apply Hom.term _
 #align category_theory.limits.wide_pullback_shape.struct CategoryTheory.Limits.WidePullbackShape.struct
@@ -93,7 +93,9 @@ instance subsingleton_hom : Quiver.IsThin (WidePullbackShape J) := fun _ _ => by
   constructor
   intro a b
   casesm* WidePullbackShape _, (_: WidePullbackShape _) ⟶ (_ : WidePullbackShape _)
-  rfl; rfl; rfl
+  · rfl
+  · rfl
+  · rfl
 #align category_theory.limits.wide_pullback_shape.subsingleton_hom CategoryTheory.Limits.WidePullbackShape.subsingleton_hom
 
 instance category : SmallCategory (WidePullbackShape J) :=
@@ -186,7 +188,7 @@ instance struct : CategoryStruct (WidePushoutShape J) where
   id j := Hom.id j
   comp f g := by
     cases f
-    exact g
+    · exact g
     cases g
     apply Hom.init _
 #align category_theory.limits.wide_pushout_shape.struct CategoryTheory.Limits.WidePushoutShape.struct
@@ -378,8 +380,8 @@ theorem eq_lift_of_comp_eq (g : X ⟶ widePullback _ _ arrows) :
 theorem hom_eq_lift (g : X ⟶ widePullback _ _ arrows) :
     g = lift (g ≫ base arrows) (fun j => g ≫ π arrows j) (by aesop_cat) := by
   apply eq_lift_of_comp_eq
-  aesop_cat
-  rfl  -- Porting note: quite a few missing refl's in aesop_cat now
+  · aesop_cat
+  · rfl  -- Porting note: quite a few missing refl's in aesop_cat now
 #align category_theory.limits.wide_pullback.hom_eq_lift CategoryTheory.Limits.WidePullback.hom_eq_lift
 
 @[ext 1100]
@@ -457,8 +459,8 @@ theorem hom_eq_desc (g : widePushout _ _ arrows ⟶ X) :
         rw [← Category.assoc]
         simp := by
   apply eq_desc_of_comp_eq
-  aesop_cat
-  rfl -- Porting note: another missing rfl
+  · aesop_cat
+  · rfl -- Porting note: another missing rfl
 #align category_theory.limits.wide_pushout.hom_eq_desc CategoryTheory.Limits.WidePushout.hom_eq_desc
 
 @[ext 1100]
chore: remove unnecessary cdots (#12417)

These · are scoping when there is a single active goal.

These were found using a modification of the linter at #12339.

Diff
@@ -241,7 +241,7 @@ def wideSpan (B : C) (objs : J → C) (arrows : ∀ j : J, B ⟶ objs j) : WideP
     cases f
     · simp only [Eq.ndrec, hom_id, eq_rec_constant, Category.id_comp]; congr
     · cases g
-      · simp only [Eq.ndrec, hom_id, eq_rec_constant, Category.comp_id]; congr
+      simp only [Eq.ndrec, hom_id, eq_rec_constant, Category.comp_id]; congr
 #align category_theory.limits.wide_pushout_shape.wide_span CategoryTheory.Limits.WidePushoutShape.wideSpan
 
 /-- Every diagram is naturally isomorphic (actually, equal) to a `wideSpan` -/
chore: remove autoImplicit from more files (#11798)

and reduce its scope in a few other instances. Mostly in CategoryTheory and Data this time; some Combinatorics also.

Co-authored-by: Richard Osborn <richardosborn@mac.com>

Diff
@@ -26,9 +26,6 @@ Typeclasses `HasWidePullbacks` and `HasFiniteWidePullbacks` assert the existence
 pullbacks and finite wide pullbacks.
 -/
 
-set_option autoImplicit true
-
-
 universe w w' v u
 
 open CategoryTheory CategoryTheory.Limits Opposite
@@ -323,11 +320,9 @@ noncomputable abbrev widePushout (B : C) (objs : J → C) (arrows : ∀ j : J, B
   colimit (WidePushoutShape.wideSpan B objs arrows)
 #align category_theory.limits.wide_pushout CategoryTheory.Limits.widePushout
 
--- variable (C) -- Porting note: Lean had problems with which `C` below. Changed to `D`
-
 namespace WidePullback
 
-variable {D} [Category.{v₂} D] {B : D} {objs : J → D} (arrows : ∀ j : J, objs j ⟶ B)
+variable {C : Type u} [Category.{v} C] {B : C} {objs : J → C} (arrows : ∀ j : J, objs j ⟶ B)
 variable [HasWidePullback B objs arrows]
 
 /-- The `j`-th projection from the pullback. -/
@@ -349,13 +344,13 @@ theorem π_arrow (j : J) : π arrows j ≫ arrows _ = base arrows := by
 variable {arrows}
 
 /-- Lift a collection of morphisms to a morphism to the pullback. -/
-noncomputable abbrev lift {X : D} (f : X ⟶ B) (fs : ∀ j : J, X ⟶ objs j)
+noncomputable abbrev lift {X : C} (f : X ⟶ B) (fs : ∀ j : J, X ⟶ objs j)
     (w : ∀ j, fs j ≫ arrows j = f) : X ⟶ widePullback _ _ arrows :=
   limit.lift (WidePullbackShape.wideCospan _ _ _) (WidePullbackShape.mkCone f fs <| w)
 #align category_theory.limits.wide_pullback.lift CategoryTheory.Limits.WidePullback.lift
 
 variable (arrows)
-variable {X : D} (f : X ⟶ B) (fs : ∀ j : J, X ⟶ objs j) (w : ∀ j, fs j ≫ arrows j = f)
+variable {X : C} (f : X ⟶ B) (fs : ∀ j : J, X ⟶ objs j) (w : ∀ j, fs j ≫ arrows j = f)
 
 -- Porting note (#10618): simp can prove this so removed simp attribute
 @[reassoc]
@@ -401,7 +396,7 @@ end WidePullback
 
 namespace WidePushout
 
-variable {D} [Category.{v₂} D] {B : D} {objs : J → D} (arrows : ∀ j : J, B ⟶ objs j)
+variable {C : Type u} [Category.{v} C] {B : C} {objs : J → C} (arrows : ∀ j : J, B ⟶ objs j)
 variable [HasWidePushout B objs arrows]
 
 /-- The `j`-th inclusion to the pushout. -/
@@ -425,13 +420,13 @@ attribute [nolint simpNF] WidePushout.arrow_ι WidePushout.arrow_ι_assoc
 variable {arrows}
 
 /-- Descend a collection of morphisms to a morphism from the pushout. -/
-noncomputable abbrev desc {X : D} (f : B ⟶ X) (fs : ∀ j : J, objs j ⟶ X)
+noncomputable abbrev desc {X : C} (f : B ⟶ X) (fs : ∀ j : J, objs j ⟶ X)
     (w : ∀ j, arrows j ≫ fs j = f) : widePushout _ _ arrows ⟶ X :=
   colimit.desc (WidePushoutShape.wideSpan B objs arrows) (WidePushoutShape.mkCocone f fs <| w)
 #align category_theory.limits.wide_pushout.desc CategoryTheory.Limits.WidePushout.desc
 
 variable (arrows)
-variable {X : D} (f : B ⟶ X) (fs : ∀ j : J, objs j ⟶ X) (w : ∀ j, arrows j ≫ fs j = f)
+variable {X : C} (f : B ⟶ X) (fs : ∀ j : J, objs j ⟶ X) (w : ∀ j, arrows j ≫ fs j = f)
 
 -- Porting note (#10618): simp can prove this so removed simp attribute
 @[reassoc]
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
@@ -328,7 +328,6 @@ noncomputable abbrev widePushout (B : C) (objs : J → C) (arrows : ∀ j : J, B
 namespace WidePullback
 
 variable {D} [Category.{v₂} D] {B : D} {objs : J → D} (arrows : ∀ j : J, objs j ⟶ B)
-
 variable [HasWidePullback B objs arrows]
 
 /-- The `j`-th projection from the pullback. -/
@@ -356,7 +355,6 @@ noncomputable abbrev lift {X : D} (f : X ⟶ B) (fs : ∀ j : J, X ⟶ objs j)
 #align category_theory.limits.wide_pullback.lift CategoryTheory.Limits.WidePullback.lift
 
 variable (arrows)
-
 variable {X : D} (f : X ⟶ B) (fs : ∀ j : J, X ⟶ objs j) (w : ∀ j, fs j ≫ arrows j = f)
 
 -- Porting note (#10618): simp can prove this so removed simp attribute
@@ -404,7 +402,6 @@ end WidePullback
 namespace WidePushout
 
 variable {D} [Category.{v₂} D] {B : D} {objs : J → D} (arrows : ∀ j : J, B ⟶ objs j)
-
 variable [HasWidePushout B objs arrows]
 
 /-- The `j`-th inclusion to the pushout. -/
@@ -434,7 +431,6 @@ noncomputable abbrev desc {X : D} (f : B ⟶ X) (fs : ∀ j : J, objs j ⟶ X)
 #align category_theory.limits.wide_pushout.desc CategoryTheory.Limits.WidePushout.desc
 
 variable (arrows)
-
 variable {X : D} (f : B ⟶ X) (fs : ∀ j : J, objs j ⟶ X) (w : ∀ j, arrows j ≫ fs j = f)
 
 -- Porting note (#10618): simp can prove this so removed simp attribute
chore: remove tactics (#11365)

More tactics that are not used, found using the linter at #11308.

The PR consists of tactic removals, whitespace changes and replacing a porting note by an explanation.

Diff
@@ -144,7 +144,7 @@ def mkCone {F : WidePullbackShape J ⥤ C} {X : C} (f : X ⟶ F.obj none) (π :
           | none => f
           | some j => π j
         naturality := fun j j' f => by
-          cases j <;> cases j' <;> cases f <;> refine id _ <;> dsimp <;> simp [w] } }
+          cases j <;> cases j' <;> cases f <;> dsimp <;> simp [w] } }
 #align category_theory.limits.wide_pullback_shape.mk_cone CategoryTheory.Limits.WidePullbackShape.mkCone
 
 /-- Wide pullback diagrams of equivalent index types are equivalent. -/
@@ -264,7 +264,7 @@ def mkCocone {F : WidePushoutShape J ⥤ C} {X : C} (f : F.obj none ⟶ X) (ι :
           | none => f
           | some j => ι j
         naturality := fun j j' f => by
-          cases j <;> cases j' <;> cases f <;> refine id _ <;> dsimp <;> simp [w] } }
+          cases j <;> cases j' <;> cases f <;> dsimp <;> simp [w] } }
 #align category_theory.limits.wide_pushout_shape.mk_cocone CategoryTheory.Limits.WidePushoutShape.mkCocone
 
 /-- Wide pushout diagrams of equivalent index types are equivalent. -/
chore: bump aesop; update syntax (#10955)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -90,7 +90,7 @@ def evalCasesBash : TacticM Unit := do
     (← `(tactic| casesm* WidePullbackShape _,
       (_: WidePullbackShape _) ⟶ (_ : WidePullbackShape _) ))
 
-attribute [local aesop safe tactic (rule_sets [CategoryTheory])] evalCasesBash
+attribute [local aesop safe tactic (rule_sets := [CategoryTheory])] evalCasesBash
 
 instance subsingleton_hom : Quiver.IsThin (WidePullbackShape J) := fun _ _ => by
   constructor
@@ -206,7 +206,7 @@ def evalCasesBash' : TacticM Unit := do
     (← `(tactic| casesm* WidePushoutShape _,
       (_: WidePushoutShape _) ⟶ (_ : WidePushoutShape _) ))
 
-attribute [local aesop safe tactic (rule_sets [CategoryTheory])] evalCasesBash'
+attribute [local aesop safe tactic (rule_sets := [CategoryTheory])] evalCasesBash'
 
 instance subsingleton_hom : Quiver.IsThin (WidePushoutShape J) := fun _ _ => by
   constructor
chore: classify simp can do this porting notes (#10619)

Classify by adding issue number (#10618) to porting notes claiming anything semantically equivalent to simp can prove this or simp can simplify this.

Diff
@@ -359,13 +359,13 @@ variable (arrows)
 
 variable {X : D} (f : X ⟶ B) (fs : ∀ j : J, X ⟶ objs j) (w : ∀ j, fs j ≫ arrows j = f)
 
--- Porting note: simp can prove this so removed simp attribute
+-- Porting note (#10618): simp can prove this so removed simp attribute
 @[reassoc]
 theorem lift_π (j : J) : lift f fs w ≫ π arrows j = fs _ := by
   simp only [limit.lift_π, WidePullbackShape.mkCone_pt, WidePullbackShape.mkCone_π_app]
 #align category_theory.limits.wide_pullback.lift_π CategoryTheory.Limits.WidePullback.lift_π
 
--- Porting note: simp can prove this so removed simp attribute
+-- Porting note (#10618): simp can prove this so removed simp attribute
 @[reassoc]
 theorem lift_base : lift f fs w ≫ base arrows = f := by
   simp only [limit.lift_π, WidePullbackShape.mkCone_pt, WidePullbackShape.mkCone_π_app]
@@ -437,13 +437,13 @@ variable (arrows)
 
 variable {X : D} (f : B ⟶ X) (fs : ∀ j : J, objs j ⟶ X) (w : ∀ j, arrows j ≫ fs j = f)
 
--- Porting note: simp can prove this so removed simp attribute
+-- Porting note (#10618): simp can prove this so removed simp attribute
 @[reassoc]
 theorem ι_desc (j : J) : ι arrows j ≫ desc f fs w = fs _ := by
   simp only [colimit.ι_desc, WidePushoutShape.mkCocone_pt, WidePushoutShape.mkCocone_ι_app]
 #align category_theory.limits.wide_pushout.ι_desc CategoryTheory.Limits.WidePushout.ι_desc
 
--- Porting note: simp can prove this so removed simp attribute
+-- Porting note (#10618): simp can prove this so removed simp attribute
 @[reassoc]
 theorem head_desc : head arrows ≫ desc f fs w = f := by
   simp only [colimit.ι_desc, WidePushoutShape.mkCocone_pt, WidePushoutShape.mkCocone_ι_app]
refactor: purge aesop_cat_nonterminal (#7505)

aesop_cat_nonterminal is a non-terminal variant of aesop. It's not supposed to be used in production code since it's even worse than non-terminal simp. However, there were a few occurrences left (presumably from the port), which this PR removes.

The only nontrivial change is that I add mathlib's rfl tactic to the CategoryTheory Aesop rule set.

Diff
@@ -153,11 +153,11 @@ def equivalenceOfEquiv (J' : Type w') (h : J ≃ J') : WidePullbackShape J ≌ W
   functor := wideCospan none (fun j => some (h j)) fun j => Hom.term (h j)
   inverse := wideCospan none (fun j => some (h.invFun j)) fun j => Hom.term (h.invFun j)
   unitIso :=
-    NatIso.ofComponents (fun j => by aesop_cat_nonterminal; repeat rfl) fun f => by
-      simp only [eq_iff_true_of_subsingleton]
+    NatIso.ofComponents (fun j => by aesop_cat) fun f =>
+      by simp only [eq_iff_true_of_subsingleton]
   counitIso :=
-    NatIso.ofComponents (fun j => by aesop_cat_nonterminal; repeat rfl) fun f => by
-      simp only [eq_iff_true_of_subsingleton]
+    NatIso.ofComponents (fun j => by aesop_cat)
+      fun f => by simp only [eq_iff_true_of_subsingleton]
 #align category_theory.limits.wide_pullback_shape.equivalence_of_equiv CategoryTheory.Limits.WidePullbackShape.equivalenceOfEquiv
 
 /-- Lifting universe and morphism levels preserves wide pullback diagrams. -/
@@ -273,10 +273,10 @@ def equivalenceOfEquiv (J' : Type w') (h : J ≃ J') : WidePushoutShape J ≌ Wi
   functor := wideSpan none (fun j => some (h j)) fun j => Hom.init (h j)
   inverse := wideSpan none (fun j => some (h.invFun j)) fun j => Hom.init (h.invFun j)
   unitIso :=
-    NatIso.ofComponents (fun j => by aesop_cat_nonterminal; repeat rfl) fun f => by
+    NatIso.ofComponents (fun j => by aesop_cat) fun f => by
       simp only [eq_iff_true_of_subsingleton]
   counitIso :=
-    NatIso.ofComponents (fun j => by aesop_cat_nonterminal; repeat rfl) fun f => by
+    NatIso.ofComponents (fun j => by aesop_cat) fun f => by
       simp only [eq_iff_true_of_subsingleton]
 
 /-- Lifting universe and morphism levels preserves wide pushout diagrams. -/
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
@@ -26,6 +26,8 @@ Typeclasses `HasWidePullbacks` and `HasFiniteWidePullbacks` assert the existence
 pullbacks and finite wide pullbacks.
 -/
 
+set_option autoImplicit true
+
 
 universe w w' v u
 
chore: ensure all instances referred to directly have explicit names (#6423)

Per https://github.com/leanprover/lean4/issues/2343, we are going to need to change the automatic generation of instance names, as they become too long.

This PR ensures that everywhere in Mathlib that refers to an instance by name, that name is given explicitly, rather than being automatically generated.

There are four exceptions, which are now commented, with links to https://github.com/leanprover/lean4/issues/2343.

This was implemented by running Mathlib against a modified Lean that appended _ᾰ to all automatically generated names, and fixing everything.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -61,6 +61,8 @@ inductive Hom : WidePullbackShape J → WidePullbackShape J → Type w
   deriving DecidableEq
 #align category_theory.limits.wide_pullback_shape.hom CategoryTheory.Limits.WidePullbackShape.Hom
 
+-- This is relying on an automatically generated instance name, generated in a `deriving` handler.
+-- See https://github.com/leanprover/lean4/issues/2343
 attribute [nolint unusedArguments] instDecidableEqHom
 
 instance struct : CategoryStruct (WidePullbackShape J) where
@@ -176,6 +178,8 @@ inductive Hom : WidePushoutShape J → WidePushoutShape J → Type w
   deriving DecidableEq
 #align category_theory.limits.wide_pushout_shape.hom CategoryTheory.Limits.WidePushoutShape.Hom
 
+-- This is relying on an automatically generated instance name, generated in a `deriving` handler.
+-- See https://github.com/leanprover/lean4/issues/2343
 attribute [nolint unusedArguments] instDecidableEqHom
 
 instance struct : CategoryStruct (WidePushoutShape J) where
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,15 +2,12 @@
 Copyright (c) 2020 Bhavik Mehta. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Bhavik Mehta, Jakob von Raumer
-
-! This file was ported from Lean 3 source module category_theory.limits.shapes.wide_pullbacks
-! leanprover-community/mathlib commit f187f1074fa1857c94589cc653c786cadc4c35ff
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.Limits.HasLimits
 import Mathlib.CategoryTheory.Thin
 
+#align_import category_theory.limits.shapes.wide_pullbacks from "leanprover-community/mathlib"@"f187f1074fa1857c94589cc653c786cadc4c35ff"
+
 /-!
 # Wide pullbacks
 
chore: cleanup whitespace (#5988)

Grepping for [^ .:{-] [^ :] and reviewing the results. Once I started I couldn't stop. :-)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -87,14 +87,14 @@ aesop rule directing on `WidePushoutOut` and it didn't take for some reason -/
 def evalCasesBash : TacticM Unit := do
   evalTactic
     (← `(tactic| casesm* WidePullbackShape _,
-      (_: WidePullbackShape _) ⟶  (_ : WidePullbackShape _) ))
+      (_: WidePullbackShape _) ⟶ (_ : WidePullbackShape _) ))
 
 attribute [local aesop safe tactic (rule_sets [CategoryTheory])] evalCasesBash
 
 instance subsingleton_hom : Quiver.IsThin (WidePullbackShape J) := fun _ _ => by
   constructor
   intro a b
-  casesm* WidePullbackShape _, (_: WidePullbackShape _) ⟶  (_ : WidePullbackShape _)
+  casesm* WidePullbackShape _, (_: WidePullbackShape _) ⟶ (_ : WidePullbackShape _)
   rfl; rfl; rfl
 #align category_theory.limits.wide_pullback_shape.subsingleton_hom CategoryTheory.Limits.WidePullbackShape.subsingleton_hom
 
@@ -201,14 +201,14 @@ open Lean Elab Tactic
 def evalCasesBash' : TacticM Unit := do
   evalTactic
     (← `(tactic| casesm* WidePushoutShape _,
-      (_: WidePushoutShape _) ⟶  (_ : WidePushoutShape _) ))
+      (_: WidePushoutShape _) ⟶ (_ : WidePushoutShape _) ))
 
 attribute [local aesop safe tactic (rule_sets [CategoryTheory])] evalCasesBash'
 
 instance subsingleton_hom : Quiver.IsThin (WidePushoutShape J) := fun _ _ => by
   constructor
   intro a b
-  casesm* WidePushoutShape _, (_: WidePushoutShape _) ⟶  (_ : WidePushoutShape _)
+  casesm* WidePushoutShape _, (_: WidePushoutShape _) ⟶ (_ : WidePushoutShape _)
   repeat rfl
 #align category_theory.limits.wide_pushout_shape.subsingleton_hom CategoryTheory.Limits.WidePushoutShape.subsingleton_hom
 
@@ -261,7 +261,7 @@ def mkCocone {F : WidePushoutShape J ⥤ C} {X : C} (f : F.obj none ⟶ X) (ι :
           | none => f
           | some j => ι j
         naturality := fun j j' f => by
-          cases j <;> cases j' <;> cases f <;> refine id _  <;> dsimp <;> simp [w] } }
+          cases j <;> cases j' <;> cases f <;> refine id _ <;> dsimp <;> simp [w] } }
 #align category_theory.limits.wide_pushout_shape.mk_cocone CategoryTheory.Limits.WidePushoutShape.mkCocone
 
 /-- Wide pushout diagrams of equivalent index types are equivalent. -/
chore: dualize statements about pullbacks to pushouts (#5700)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -264,6 +264,24 @@ def mkCocone {F : WidePushoutShape J ⥤ C} {X : C} (f : F.obj none ⟶ X) (ι :
           cases j <;> cases j' <;> cases f <;> refine id _  <;> dsimp <;> simp [w] } }
 #align category_theory.limits.wide_pushout_shape.mk_cocone CategoryTheory.Limits.WidePushoutShape.mkCocone
 
+/-- Wide pushout diagrams of equivalent index types are equivalent. -/
+def equivalenceOfEquiv (J' : Type w') (h : J ≃ J') : WidePushoutShape J ≌ WidePushoutShape J'
+    where
+  functor := wideSpan none (fun j => some (h j)) fun j => Hom.init (h j)
+  inverse := wideSpan none (fun j => some (h.invFun j)) fun j => Hom.init (h.invFun j)
+  unitIso :=
+    NatIso.ofComponents (fun j => by aesop_cat_nonterminal; repeat rfl) fun f => by
+      simp only [eq_iff_true_of_subsingleton]
+  counitIso :=
+    NatIso.ofComponents (fun j => by aesop_cat_nonterminal; repeat rfl) fun f => by
+      simp only [eq_iff_true_of_subsingleton]
+
+/-- Lifting universe and morphism levels preserves wide pushout diagrams. -/
+def uliftEquivalence :
+    ULiftHom.{w'} (ULift.{w'} (WidePushoutShape J)) ≌ WidePushoutShape (ULift J) :=
+  (ULiftHomULiftCategory.equiv.{w', w', w, w} (WidePushoutShape J)).symm.trans
+    (equivalenceOfEquiv _ (Equiv.ulift.{w', w}.symm : J ≃ ULift.{w'} J))
+
 end WidePushoutShape
 
 variable (C : Type u) [Category.{v} C]
@@ -549,6 +567,11 @@ def widePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape
   counitIso := widePushoutShapeUnopOp J
 #align category_theory.limits.wide_pullback_shape_op_equiv CategoryTheory.Limits.widePullbackShapeOpEquiv
 
+/-- If a category has wide pushouts on a higher universe level it also has wide pushouts
+on a lower universe level. -/
+theorem hasWidePushouts_shrink [HasWidePushouts.{max w w'} C] : HasWidePushouts.{w} C := fun _ =>
+  hasColimitsOfShape_of_equivalence (WidePushoutShape.equivalenceOfEquiv _ Equiv.ulift.{w'})
+
 /-- If a category has wide pullbacks on a higher universe level it also has wide pullbacks
 on a lower universe level. -/
 theorem hasWidePullbacks_shrink [HasWidePullbacks.{max w w'} C] : HasWidePullbacks.{w} C := fun _ =>
chore: review of automation in category theory (#4793)

Clean up of automation in the category theory library. Leaving out unnecessary proof steps, or fields done by aesop_cat, and making more use of available autoparameters.

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

Diff
@@ -129,7 +129,7 @@ def wideCospan (B : C) (objs : J → C) (arrows : ∀ j : J, objs j ⟶ B) : Wid
 /-- Every diagram is naturally isomorphic (actually, equal) to a `wideCospan` -/
 def diagramIsoWideCospan (F : WidePullbackShape J ⥤ C) :
     F ≅ wideCospan (F.obj none) (fun j => F.obj (some j)) fun j => F.map (Hom.term j) :=
-  (NatIso.ofComponents fun j => eqToIso <| by aesop_cat) <| by aesop_cat
+  NatIso.ofComponents fun j => eqToIso <| by aesop_cat
 #align category_theory.limits.wide_pullback_shape.diagram_iso_wide_cospan CategoryTheory.Limits.WidePullbackShape.diagramIsoWideCospan
 
 /-- Construct a cone over a wide cospan. -/
@@ -247,7 +247,7 @@ def wideSpan (B : C) (objs : J → C) (arrows : ∀ j : J, B ⟶ objs j) : WideP
 /-- Every diagram is naturally isomorphic (actually, equal) to a `wideSpan` -/
 def diagramIsoWideSpan (F : WidePushoutShape J ⥤ C) :
     F ≅ wideSpan (F.obj none) (fun j => F.obj (some j)) fun j => F.map (Hom.init j) :=
-  (NatIso.ofComponents fun j => eqToIso <| by cases j; repeat rfl) <| by aesop_cat
+  NatIso.ofComponents fun j => eqToIso <| by cases j; repeat rfl
 #align category_theory.limits.wide_pushout_shape.diagram_iso_wide_span CategoryTheory.Limits.WidePushoutShape.diagramIsoWideSpan
 
 /-- Construct a cocone over a wide span. -/
@@ -510,25 +510,25 @@ def widePushoutShapeUnop : (WidePushoutShape J)ᵒᵖ ⥤ WidePullbackShape J :=
 /-- The inverse of the unit isomorphism of the equivalence
 `widePushoutShapeOpEquiv : (WidePushoutShape J)ᵒᵖ ≌ WidePullbackShape J` -/
 def widePushoutShapeOpUnop : widePushoutShapeUnop J ⋙ widePullbackShapeOp J ≅ 𝟭 _ :=
-  NatIso.ofComponents (fun X => Iso.refl _) fun {X} {Y} f => by aesop
+  NatIso.ofComponents fun X => Iso.refl _
 #align category_theory.limits.wide_pushout_shape_op_unop CategoryTheory.Limits.widePushoutShapeOpUnop
 
 /-- The counit isomorphism of the equivalence
 `widePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape J` -/
 def widePushoutShapeUnopOp : widePushoutShapeOp J ⋙ widePullbackShapeUnop J ≅ 𝟭 _ :=
-  NatIso.ofComponents (fun X => Iso.refl _) fun {X} {Y} f => by aesop
+  NatIso.ofComponents fun X => Iso.refl _
 #align category_theory.limits.wide_pushout_shape_unop_op CategoryTheory.Limits.widePushoutShapeUnopOp
 
 /-- The inverse of the unit isomorphism of the equivalence
 `widePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape J` -/
 def widePullbackShapeOpUnop : widePullbackShapeUnop J ⋙ widePushoutShapeOp J ≅ 𝟭 _ :=
-  NatIso.ofComponents (fun X => Iso.refl _) fun {X} {Y} f => by aesop
+  NatIso.ofComponents fun X => Iso.refl _
 #align category_theory.limits.wide_pullback_shape_op_unop CategoryTheory.Limits.widePullbackShapeOpUnop
 
 /-- The counit isomorphism of the equivalence
 `widePushoutShapeOpEquiv : (WidePushoutShape J)ᵒᵖ ≌ WidePullbackShape J` -/
 def widePullbackShapeUnopOp : widePullbackShapeOp J ⋙ widePushoutShapeUnop J ≅ 𝟭 _ :=
-  NatIso.ofComponents (fun X => Iso.refl _) fun {X} {Y} f => by aesop
+  NatIso.ofComponents fun X => Iso.refl _
 #align category_theory.limits.wide_pullback_shape_unop_op CategoryTheory.Limits.widePullbackShapeUnopOp
 
 /-- The duality equivalence `(WidePushoutShape J)ᵒᵖ ≌ WidePullbackShape J` -/
chore: bye-bye, solo bys! (#3825)

This PR puts, with one exception, every single remaining by that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh. The exception is when the by begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.

Essentially this is s/\n *by$/ by/g, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated bys".

Diff
@@ -369,9 +369,8 @@ theorem hom_eq_lift (g : X ⟶ widePullback _ _ arrows) :
 #align category_theory.limits.wide_pullback.hom_eq_lift CategoryTheory.Limits.WidePullback.hom_eq_lift
 
 @[ext 1100]
-theorem hom_ext (g1 g2 : X ⟶ widePullback _ _ arrows) :
-    (∀ j : J, g1 ≫ π arrows j = g2 ≫ π arrows j) → g1 ≫ base arrows = g2 ≫ base arrows → g1 = g2 :=
-  by
+theorem hom_ext (g1 g2 : X ⟶ widePullback _ _ arrows) : (∀ j : J,
+    g1 ≫ π arrows j = g2 ≫ π arrows j) → g1 ≫ base arrows = g2 ≫ base arrows → g1 = g2 := by
   intro h1 h2
   apply limit.hom_ext
   rintro (_ | _)
@@ -451,9 +450,8 @@ theorem hom_eq_desc (g : widePushout _ _ arrows ⟶ X) :
 #align category_theory.limits.wide_pushout.hom_eq_desc CategoryTheory.Limits.WidePushout.hom_eq_desc
 
 @[ext 1100]
-theorem hom_ext (g1 g2 : widePushout _ _ arrows ⟶ X) :
-    (∀ j : J, ι arrows j ≫ g1 = ι arrows j ≫ g2) → head arrows ≫ g1 = head arrows ≫ g2 → g1 = g2 :=
-  by
+theorem hom_ext (g1 g2 : widePushout _ _ arrows ⟶ X) : (∀ j : J,
+    ι arrows j ≫ g1 = ι arrows j ≫ g2) → head arrows ≫ g1 = head arrows ≫ g2 → g1 = g2 := by
   intro h1 h2
   apply colimit.hom_ext
   rintro (_ | _)
chore: tidy various files (#3530)
Diff
@@ -172,7 +172,7 @@ namespace WidePushoutShape
 
 variable {J}
 
-/-- The type of arrows for the shape indexing a wide psuhout. -/
+/-- The type of arrows for the shape indexing a wide pushout. -/
 inductive Hom : WidePushoutShape J → WidePushoutShape J → Type w
   | id : ∀ X, Hom X X
   | init : ∀ j : J, Hom none (some j)
@@ -273,19 +273,19 @@ abbrev HasWidePullbacks : Prop :=
   ∀ J : Type w, HasLimitsOfShape (WidePullbackShape J) C
 #align category_theory.limits.has_wide_pullbacks CategoryTheory.Limits.HasWidePullbacks
 
-/-- `has_wide_pushouts` represents a choice of wide pushout for every collection of morphisms -/
+/-- `HasWidePushouts` represents a choice of wide pushout for every collection of morphisms -/
 abbrev HasWidePushouts : Prop :=
   ∀ J : Type w, HasColimitsOfShape (WidePushoutShape J) C
 #align category_theory.limits.has_wide_pushouts CategoryTheory.Limits.HasWidePushouts
 
 variable {C J}
 
-/-- `has_wide_pullback B objs arrows` means that `wideCospan B objs arrows` has a limit. -/
+/-- `HasWidePullback B objs arrows` means that `wideCospan B objs arrows` has a limit. -/
 abbrev HasWidePullback (B : C) (objs : J → C) (arrows : ∀ j : J, objs j ⟶ B) : Prop :=
   HasLimit (WidePullbackShape.wideCospan B objs arrows)
 #align category_theory.limits.has_wide_pullback CategoryTheory.Limits.HasWidePullback
 
-/-- `has_wide_pushout B objs arrows` means that `wideSpan B objs arrows` has a colimit. -/
+/-- `HasWidePushout B objs arrows` means that `wideSpan B objs arrows` has a colimit. -/
 abbrev HasWidePushout (B : C) (objs : J → C) (arrows : ∀ j : J, B ⟶ objs j) : Prop :=
   HasColimit (WidePushoutShape.wideSpan B objs arrows)
 #align category_theory.limits.has_wide_pushout CategoryTheory.Limits.HasWidePushout
@@ -442,8 +442,7 @@ theorem eq_desc_of_comp_eq (g : widePushout _ _ arrows ⟶ X) :
 
 theorem hom_eq_desc (g : widePushout _ _ arrows ⟶ X) :
     g =
-      desc (head arrows ≫ g) (fun j => ι arrows j ≫ g) fun j =>
-        by
+      desc (head arrows ≫ g) (fun j => ι arrows j ≫ g) fun j => by
         rw [← Category.assoc]
         simp := by
   apply eq_desc_of_comp_eq
@@ -483,7 +482,7 @@ def widePullbackShapeOp : WidePullbackShape J ⥤ (WidePushoutShape J)ᵒᵖ whe
 #align category_theory.limits.wide_pullback_shape_op CategoryTheory.Limits.widePullbackShapeOp
 
 /-- The action on morphisms of the obvious functor
-`WidePushoutShapeOp : `WidePushoutShape J ⥤ (WidePullbackShape J)ᵒᵖ` -/
+`widePushoutShapeOp : WidePushoutShape J ⥤ (WidePullbackShape J)ᵒᵖ` -/
 def widePushoutShapeOpMap :
     ∀ X Y : WidePushoutShape J,
       (X ⟶ Y) → ((op X : (WidePullbackShape J)ᵒᵖ) ⟶ (op Y : (WidePullbackShape J)ᵒᵖ))
@@ -511,25 +510,25 @@ def widePushoutShapeUnop : (WidePushoutShape J)ᵒᵖ ⥤ WidePullbackShape J :=
 #align category_theory.limits.wide_pushout_shape_unop CategoryTheory.Limits.widePushoutShapeUnop
 
 /-- The inverse of the unit isomorphism of the equivalence
-`WidePushoutShapeOpEquiv : (WidePushoutShape J)ᵒᵖ ≌ WidePullbackShape J` -/
+`widePushoutShapeOpEquiv : (WidePushoutShape J)ᵒᵖ ≌ WidePullbackShape J` -/
 def widePushoutShapeOpUnop : widePushoutShapeUnop J ⋙ widePullbackShapeOp J ≅ 𝟭 _ :=
   NatIso.ofComponents (fun X => Iso.refl _) fun {X} {Y} f => by aesop
 #align category_theory.limits.wide_pushout_shape_op_unop CategoryTheory.Limits.widePushoutShapeOpUnop
 
 /-- The counit isomorphism of the equivalence
-`WidePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape J` -/
+`widePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape J` -/
 def widePushoutShapeUnopOp : widePushoutShapeOp J ⋙ widePullbackShapeUnop J ≅ 𝟭 _ :=
   NatIso.ofComponents (fun X => Iso.refl _) fun {X} {Y} f => by aesop
 #align category_theory.limits.wide_pushout_shape_unop_op CategoryTheory.Limits.widePushoutShapeUnopOp
 
 /-- The inverse of the unit isomorphism of the equivalence
-`WidePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape J` -/
+`widePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape J` -/
 def widePullbackShapeOpUnop : widePullbackShapeUnop J ⋙ widePushoutShapeOp J ≅ 𝟭 _ :=
   NatIso.ofComponents (fun X => Iso.refl _) fun {X} {Y} f => by aesop
 #align category_theory.limits.wide_pullback_shape_op_unop CategoryTheory.Limits.widePullbackShapeOpUnop
 
 /-- The counit isomorphism of the equivalence
-`WidePushoutShapeOpEquiv : (WidePushoutShape J)ᵒᵖ ≌ WidePullbackShape J` -/
+`widePushoutShapeOpEquiv : (WidePushoutShape J)ᵒᵖ ≌ WidePullbackShape J` -/
 def widePullbackShapeUnopOp : widePullbackShapeOp J ⋙ widePushoutShapeUnop J ≅ 𝟭 _ :=
   NatIso.ofComponents (fun X => Iso.refl _) fun {X} {Y} f => by aesop
 #align category_theory.limits.wide_pullback_shape_unop_op CategoryTheory.Limits.widePullbackShapeUnopOp
feat: port AlgebraicTopology.CechNerve (#3500)
Diff
@@ -368,7 +368,7 @@ theorem hom_eq_lift (g : X ⟶ widePullback _ _ arrows) :
   rfl  -- Porting note: quite a few missing refl's in aesop_cat now
 #align category_theory.limits.wide_pullback.hom_eq_lift CategoryTheory.Limits.WidePullback.hom_eq_lift
 
-@[ext]
+@[ext 1100]
 theorem hom_ext (g1 g2 : X ⟶ widePullback _ _ arrows) :
     (∀ j : J, g1 ≫ π arrows j = g2 ≫ π arrows j) → g1 ≫ base arrows = g2 ≫ base arrows → g1 = g2 :=
   by
@@ -451,7 +451,7 @@ theorem hom_eq_desc (g : widePushout _ _ arrows ⟶ X) :
   rfl -- Porting note: another missing rfl
 #align category_theory.limits.wide_pushout.hom_eq_desc CategoryTheory.Limits.WidePushout.hom_eq_desc
 
-@[ext]
+@[ext 1100]
 theorem hom_ext (g1 g2 : widePushout _ _ arrows ⟶ X) :
     (∀ j : J, ι arrows j ≫ g1 = ι arrows j ≫ g2) → head arrows ≫ g1 = head arrows ≫ g2 → g1 = g2 :=
   by
fix: do not use nonterminal Aesop for auto-params (#2527)

This commit makes aesop_cat and aesop_graph terminal (i.e. they either solve the goal or fail). This appears to solve issues where non-terminal tactics, when used as auto-params, introduce unknown universe variables. See

https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Goal.20state.20not.20updating.2C.20bugs.2C.20etc.2E

Since there are some intended nonterminal uses of aesop_cat, we introduce aesop_cat_nonterminal as the nonterminal equivalent of aesop_cat.

Diff
@@ -152,10 +152,10 @@ def equivalenceOfEquiv (J' : Type w') (h : J ≃ J') : WidePullbackShape J ≌ W
   functor := wideCospan none (fun j => some (h j)) fun j => Hom.term (h j)
   inverse := wideCospan none (fun j => some (h.invFun j)) fun j => Hom.term (h.invFun j)
   unitIso :=
-    NatIso.ofComponents (fun j => by aesop_cat; repeat rfl) fun f => by
+    NatIso.ofComponents (fun j => by aesop_cat_nonterminal; repeat rfl) fun f => by
       simp only [eq_iff_true_of_subsingleton]
   counitIso :=
-    NatIso.ofComponents (fun j => by aesop_cat; repeat rfl) fun f => by
+    NatIso.ofComponents (fun j => by aesop_cat_nonterminal; repeat rfl) fun f => by
       simp only [eq_iff_true_of_subsingleton]
 #align category_theory.limits.wide_pullback_shape.equivalence_of_equiv CategoryTheory.Limits.WidePullbackShape.equivalenceOfEquiv
 
feat: port CategoryTheory.Limits.Opposites (#2805)

Co-authored-by: Johan Commelin <johan@commelin.net>

Diff
@@ -39,18 +39,18 @@ namespace CategoryTheory.Limits
 variable (J : Type w)
 
 /-- A wide pullback shape for any type `J` can be written simply as `Option J`. -/
-def WidePullbackShape := Option J 
+def WidePullbackShape := Option J
 #align category_theory.limits.wide_pullback_shape CategoryTheory.Limits.WidePullbackShape
 
 -- Porting note: strangely this could be synthesized
-instance : Inhabited (WidePullbackShape J) where 
+instance : Inhabited (WidePullbackShape J) where
   default := none
 
 /-- A wide pushout shape for any type `J` can be written simply as `Option J`. -/
-def WidePushoutShape := Option J 
+def WidePushoutShape := Option J
 #align category_theory.limits.wide_pushout_shape CategoryTheory.Limits.WidePushoutShape
 
-instance : Inhabited (WidePushoutShape J) where 
+instance : Inhabited (WidePushoutShape J) where
   default := none
 
 namespace WidePullbackShape
@@ -61,7 +61,7 @@ variable {J}
 inductive Hom : WidePullbackShape J → WidePullbackShape J → Type w
   | id : ∀ X, Hom X X
   | term : ∀ j : J, Hom (some j) none
-  deriving DecidableEq 
+  deriving DecidableEq
 #align category_theory.limits.wide_pullback_shape.hom CategoryTheory.Limits.WidePullbackShape.Hom
 
 attribute [nolint unusedArguments] instDecidableEqHom
@@ -81,20 +81,20 @@ instance Hom.inhabited : Inhabited (Hom (none : WidePullbackShape J) none) :=
 #align category_theory.limits.wide_pullback_shape.hom.inhabited CategoryTheory.Limits.WidePullbackShape.Hom.inhabited
 
 open Lean Elab Tactic
-/- Pointing note: experimenting with manual scoping of aesop tactics. Attempted to define 
+/- Pointing note: experimenting with manual scoping of aesop tactics. Attempted to define
 aesop rule directing on `WidePushoutOut` and it didn't take for some reason -/
 /-- An aesop tactic for bulk cases on morphisms in `WidePushoutShape` -/
-def evalCasesBash : TacticM Unit := do 
-  evalTactic 
-    (← `(tactic| casesm* WidePullbackShape _, 
+def evalCasesBash : TacticM Unit := do
+  evalTactic
+    (← `(tactic| casesm* WidePullbackShape _,
       (_: WidePullbackShape _) ⟶  (_ : WidePullbackShape _) ))
 
 attribute [local aesop safe tactic (rule_sets [CategoryTheory])] evalCasesBash
 
-instance subsingleton_hom : Quiver.IsThin (WidePullbackShape J) := fun _ _ => by 
+instance subsingleton_hom : Quiver.IsThin (WidePullbackShape J) := fun _ _ => by
   constructor
-  intro a b 
-  casesm* WidePullbackShape _, (_: WidePullbackShape _) ⟶  (_ : WidePullbackShape _) 
+  intro a b
+  casesm* WidePullbackShape _, (_: WidePullbackShape _) ⟶  (_ : WidePullbackShape _)
   rfl; rfl; rfl
 #align category_theory.limits.wide_pullback_shape.subsingleton_hom CategoryTheory.Limits.WidePullbackShape.subsingleton_hom
 
@@ -107,8 +107,8 @@ theorem hom_id (X : WidePullbackShape J) : Hom.id X = 𝟙 X :=
   rfl
 #align category_theory.limits.wide_pullback_shape.hom_id CategoryTheory.Limits.WidePullbackShape.hom_id
 
-/- Porting note: we get a warning that we should change LHS to `sizeOf (𝟙 X)` but Lean cannot 
-find the category instance on `WidePullbackShape J` in that case. Once supplied in the proof, 
+/- Porting note: we get a warning that we should change LHS to `sizeOf (𝟙 X)` but Lean cannot
+find the category instance on `WidePullbackShape J` in that case. Once supplied in the proof,
 the proposed proof of `simp [only WidePullbackShape.hom_id]` does not work -/
 attribute [nolint simpNF] Hom.id.sizeOf_spec
 
@@ -198,18 +198,18 @@ instance Hom.inhabited : Inhabited (Hom (none : WidePushoutShape J) none) :=
 open Lean Elab Tactic
 -- Pointing note: experimenting with manual scoping of aesop tactics; only this worked
 /-- An aesop tactic for bulk cases on morphisms in `WidePushoutShape` -/
-def evalCasesBash' : TacticM Unit := do 
-  evalTactic 
-    (← `(tactic| casesm* WidePushoutShape _,  
+def evalCasesBash' : TacticM Unit := do
+  evalTactic
+    (← `(tactic| casesm* WidePushoutShape _,
       (_: WidePushoutShape _) ⟶  (_ : WidePushoutShape _) ))
 
 attribute [local aesop safe tactic (rule_sets [CategoryTheory])] evalCasesBash'
 
-instance subsingleton_hom : Quiver.IsThin (WidePushoutShape J) := fun _ _ => by 
+instance subsingleton_hom : Quiver.IsThin (WidePushoutShape J) := fun _ _ => by
   constructor
   intro a b
   casesm* WidePushoutShape _, (_: WidePushoutShape _) ⟶  (_ : WidePushoutShape _)
-  repeat rfl 
+  repeat rfl
 #align category_theory.limits.wide_pushout_shape.subsingleton_hom CategoryTheory.Limits.WidePushoutShape.subsingleton_hom
 
 instance category : SmallCategory (WidePushoutShape J) :=
@@ -221,8 +221,8 @@ theorem hom_id (X : WidePushoutShape J) : Hom.id X = 𝟙 X :=
   rfl
 #align category_theory.limits.wide_pushout_shape.hom_id CategoryTheory.Limits.WidePushoutShape.hom_id
 
-/- Porting note: we get a warning that we should change LHS to `sizeOf (𝟙 X)` but Lean cannot 
-find the category instance on `WidePushoutShape J` in that case. Once supplied in the proof, 
+/- Porting note: we get a warning that we should change LHS to `sizeOf (𝟙 X)` but Lean cannot
+find the category instance on `WidePushoutShape J` in that case. Once supplied in the proof,
 the proposed proof of `simp [only WidePushoutShape.hom_id]` does not work -/
 attribute [nolint simpNF] Hom.id.sizeOf_spec
 variable {C : Type u} [Category.{v} C]
@@ -237,10 +237,10 @@ def wideSpan (B : C) (objs : J → C) (arrows : ∀ j : J, B ⟶ objs j) : WideP
     cases' f with _ j
     · apply 𝟙 _
     · exact arrows j
-  map_comp := fun f g => by 
+  map_comp := fun f g => by
     cases f
-    · simp only [Eq.ndrec, hom_id, eq_rec_constant, Category.id_comp]; congr 
-    · cases g 
+    · simp only [Eq.ndrec, hom_id, eq_rec_constant, Category.id_comp]; congr
+    · cases g
       · simp only [Eq.ndrec, hom_id, eq_rec_constant, Category.comp_id]; congr
 #align category_theory.limits.wide_pushout_shape.wide_span CategoryTheory.Limits.WidePushoutShape.wideSpan
 
@@ -325,7 +325,7 @@ noncomputable abbrev base : widePullback _ _ arrows ⟶ B :=
 theorem π_arrow (j : J) : π arrows j ≫ arrows _ = base arrows := by
   apply limit.w (WidePullbackShape.wideCospan _ _ _) (WidePullbackShape.Hom.term j)
 #align category_theory.limits.wide_pullback.π_arrow CategoryTheory.Limits.WidePullback.π_arrow
- 
+
 variable {arrows}
 
 /-- Lift a collection of morphisms to a morphism to the pullback. -/
@@ -403,7 +403,7 @@ theorem arrow_ι (j : J) : arrows j ≫ ι arrows j = head arrows := by
 #align category_theory.limits.wide_pushout.arrow_ι CategoryTheory.Limits.WidePushout.arrow_ι
 
 -- Porting note: this can simplify itself
-attribute [nolint simpNF] WidePushout.arrow_ι WidePushout.arrow_ι_assoc 
+attribute [nolint simpNF] WidePushout.arrow_ι WidePushout.arrow_ι_assoc
 
 variable {arrows}
 
@@ -448,7 +448,7 @@ theorem hom_eq_desc (g : widePushout _ _ arrows ⟶ X) :
         simp := by
   apply eq_desc_of_comp_eq
   aesop_cat
-  rfl -- Porting note: another missing rfl 
+  rfl -- Porting note: another missing rfl
 #align category_theory.limits.wide_pushout.hom_eq_desc CategoryTheory.Limits.WidePushout.hom_eq_desc
 
 @[ext]
@@ -479,7 +479,7 @@ def widePullbackShapeOpMap :
 @[simps]
 def widePullbackShapeOp : WidePullbackShape J ⥤ (WidePushoutShape J)ᵒᵖ where
   obj X := op X
-  map {X₁} {X₂} := widePullbackShapeOpMap J X₁ X₂ 
+  map {X₁} {X₂} := widePullbackShapeOpMap J X₁ X₂
 #align category_theory.limits.wide_pullback_shape_op CategoryTheory.Limits.widePullbackShapeOp
 
 /-- The action on morphisms of the obvious functor
@@ -495,7 +495,7 @@ def widePushoutShapeOpMap :
 @[simps]
 def widePushoutShapeOp : WidePushoutShape J ⥤ (WidePullbackShape J)ᵒᵖ where
   obj X := op X
-  map := fun {X} {Y} => widePushoutShapeOpMap J X Y 
+  map := fun {X} {Y} => widePushoutShapeOpMap J X Y
 #align category_theory.limits.wide_pushout_shape_op CategoryTheory.Limits.widePushoutShapeOp
 
 /-- The obvious functor `(WidePullbackShape J)ᵒᵖ ⥤ WidePushoutShape J`-/
@@ -555,8 +555,7 @@ def widePullbackShapeOpEquiv : (WidePullbackShape J)ᵒᵖ ≌ WidePushoutShape
 /-- If a category has wide pullbacks on a higher universe level it also has wide pullbacks
 on a lower universe level. -/
 theorem hasWidePullbacks_shrink [HasWidePullbacks.{max w w'} C] : HasWidePullbacks.{w} C := fun _ =>
-  hasLimitsOfShapeOfEquivalence (WidePullbackShape.equivalenceOfEquiv _ Equiv.ulift.{w'})
+  hasLimitsOfShape_of_equivalence (WidePullbackShape.equivalenceOfEquiv _ Equiv.ulift.{w'})
 #align category_theory.limits.has_wide_pullbacks_shrink CategoryTheory.Limits.hasWidePullbacks_shrink
 
 end CategoryTheory.Limits
-
bump: update Aesop to 2022-02-24 (#2484)

This version of Aesop supports local and scoped rules.

Diff
@@ -89,8 +89,7 @@ def evalCasesBash : TacticM Unit := do
     (← `(tactic| casesm* WidePullbackShape _, 
       (_: WidePullbackShape _) ⟶  (_ : WidePullbackShape _) ))
 
--- attribute [local tidy] tactic.case_bash -- Porting note: removed
-attribute [aesop safe tactic (rule_sets [CategoryTheory])] evalCasesBash 
+attribute [local aesop safe tactic (rule_sets [CategoryTheory])] evalCasesBash
 
 instance subsingleton_hom : Quiver.IsThin (WidePullbackShape J) := fun _ _ => by 
   constructor
@@ -167,7 +166,6 @@ def uliftEquivalence :
     (equivalenceOfEquiv _ (Equiv.ulift.{w', w}.symm : J ≃ ULift.{w'} J))
 #align category_theory.limits.wide_pullback_shape.ulift_equivalence CategoryTheory.Limits.WidePullbackShape.uliftEquivalence
 
-erase_aesop_rules [safe tactic evalCasesBash (rule_sets [CategoryTheory])] 
 end WidePullbackShape
 
 namespace WidePushoutShape
@@ -205,8 +203,7 @@ def evalCasesBash' : TacticM Unit := do
     (← `(tactic| casesm* WidePushoutShape _,  
       (_: WidePushoutShape _) ⟶  (_ : WidePushoutShape _) ))
 
--- attribute [local tidy] tactic.case_bash -- Porting note: removed
-attribute [aesop safe tactic (rule_sets [CategoryTheory])] evalCasesBash'
+attribute [local aesop safe tactic (rule_sets [CategoryTheory])] evalCasesBash'
 
 instance subsingleton_hom : Quiver.IsThin (WidePushoutShape J) := fun _ _ => by 
   constructor
@@ -267,7 +264,6 @@ def mkCocone {F : WidePushoutShape J ⥤ C} {X : C} (f : F.obj none ⟶ X) (ι :
           cases j <;> cases j' <;> cases f <;> refine id _  <;> dsimp <;> simp [w] } }
 #align category_theory.limits.wide_pushout_shape.mk_cocone CategoryTheory.Limits.WidePushoutShape.mkCocone
 
-erase_aesop_rules [safe tactic evalCasesBash' (rule_sets [CategoryTheory])] 
 end WidePushoutShape
 
 variable (C : Type u) [Category.{v} C]
feat: port CategoryTheory.Limits.Shapes.WidePullbacks (#2453)

Dependencies 74

75 files ported (100.0%)
25799 lines ported (100.0%)

All dependencies are ported!