algebra.category.Ring.limitsMathlib.Algebra.Category.Ring.Limits

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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
@@ -5,7 +5,7 @@ Authors: Scott Morrison
 -/
 import Algebra.Ring.Pi
 import Algebra.Category.Ring.Basic
-import Algebra.Category.Group.Limits
+import Algebra.Category.GroupCat.Limits
 import RingTheory.Subring.Basic
 
 #align_import algebra.category.Ring.limits from "leanprover-community/mathlib"@"0b7c740e25651db0ba63648fbae9f9d6f941e31b"
Diff
@@ -115,7 +115,7 @@ end HasLimits
 
 open HasLimits
 
-/- ./././Mathport/Syntax/Translate/Command.lean:332:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:335:38: unsupported irreducible non-definition -/
 #print SemiRingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v} SemiRingCat.{max v u} :=
@@ -273,7 +273,7 @@ def limitConeIsLimit (F : J ⥤ CommSemiRingCat.{max v u}) : IsLimit (limitCone
 #align CommSemiRing.limit_cone_is_limit CommSemiRingCat.limitConeIsLimit
 -/
 
-/- ./././Mathport/Syntax/Translate/Command.lean:332:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:335:38: unsupported irreducible non-definition -/
 #print CommSemiRingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommSemiRingCat.{max v u} :=
@@ -395,7 +395,7 @@ def limitConeIsLimit (F : J ⥤ RingCat.{max v u}) : IsLimit (limitCone F) :=
 #align Ring.limit_cone_is_limit RingCat.limitConeIsLimit
 -/
 
-/- ./././Mathport/Syntax/Translate/Command.lean:332:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:335:38: unsupported irreducible non-definition -/
 #print RingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} RingCat.{max v u} :=
@@ -546,7 +546,7 @@ def limitConeIsLimit (F : J ⥤ CommRingCat.{max v u}) : IsLimit (limitCone F) :
 #align CommRing.limit_cone_is_limit CommRingCat.limitConeIsLimit
 -/
 
-/- ./././Mathport/Syntax/Translate/Command.lean:332:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:335:38: unsupported irreducible non-definition -/
 #print CommRingCat.hasLimitsOfSize /-
 /-- The category of commutative rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommRingCat.{max v u} :=
Diff
@@ -115,7 +115,7 @@ end HasLimits
 
 open HasLimits
 
-/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:332:38: unsupported irreducible non-definition -/
 #print SemiRingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v} SemiRingCat.{max v u} :=
@@ -273,7 +273,7 @@ def limitConeIsLimit (F : J ⥤ CommSemiRingCat.{max v u}) : IsLimit (limitCone
 #align CommSemiRing.limit_cone_is_limit CommSemiRingCat.limitConeIsLimit
 -/
 
-/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:332:38: unsupported irreducible non-definition -/
 #print CommSemiRingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommSemiRingCat.{max v u} :=
@@ -395,7 +395,7 @@ def limitConeIsLimit (F : J ⥤ RingCat.{max v u}) : IsLimit (limitCone F) :=
 #align Ring.limit_cone_is_limit RingCat.limitConeIsLimit
 -/
 
-/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:332:38: unsupported irreducible non-definition -/
 #print RingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} RingCat.{max v u} :=
@@ -546,7 +546,7 @@ def limitConeIsLimit (F : J ⥤ CommRingCat.{max v u}) : IsLimit (limitCone F) :
 #align CommRing.limit_cone_is_limit CommRingCat.limitConeIsLimit
 -/
 
-/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:332:38: unsupported irreducible non-definition -/
 #print CommRingCat.hasLimitsOfSize /-
 /-- The category of commutative rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommRingCat.{max v u} :=
Diff
@@ -3,10 +3,10 @@ Copyright (c) 2019 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 -/
-import Mathbin.Algebra.Ring.Pi
-import Mathbin.Algebra.Category.Ring.Basic
-import Mathbin.Algebra.Category.Group.Limits
-import Mathbin.RingTheory.Subring.Basic
+import Algebra.Ring.Pi
+import Algebra.Category.Ring.Basic
+import Algebra.Category.Group.Limits
+import RingTheory.Subring.Basic
 
 #align_import algebra.category.Ring.limits from "leanprover-community/mathlib"@"0b7c740e25651db0ba63648fbae9f9d6f941e31b"
 
Diff
@@ -2,17 +2,14 @@
 Copyright (c) 2019 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module algebra.category.Ring.limits
-! leanprover-community/mathlib commit 0b7c740e25651db0ba63648fbae9f9d6f941e31b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.Ring.Pi
 import Mathbin.Algebra.Category.Ring.Basic
 import Mathbin.Algebra.Category.Group.Limits
 import Mathbin.RingTheory.Subring.Basic
 
+#align_import algebra.category.Ring.limits from "leanprover-community/mathlib"@"0b7c740e25651db0ba63648fbae9f9d6f941e31b"
+
 /-!
 # The category of (commutative) rings has all limits
 
Diff
@@ -45,10 +45,13 @@ namespace SemiRingCat
 
 variable {J : Type v} [SmallCategory J]
 
+#print SemiRingCat.semiringObj /-
 instance semiringObj (F : J ⥤ SemiRingCat.{max v u}) (j) :
     Semiring ((F ⋙ forget SemiRingCat).obj j) := by change Semiring (F.obj j); infer_instance
 #align SemiRing.semiring_obj SemiRingCat.semiringObj
+-/
 
+#print SemiRingCat.sectionsSubsemiring /-
 /-- The flat sections of a functor into `SemiRing` form a subsemiring of all sections.
 -/
 def sectionsSubsemiring (F : J ⥤ SemiRingCat.{max v u}) : Subsemiring (∀ j, F.obj j) :=
@@ -58,6 +61,7 @@ def sectionsSubsemiring (F : J ⥤ SemiRingCat.{max v u}) : Subsemiring (∀ j,
     MonCat.sectionsSubmonoid (F ⋙ forget₂ SemiRingCat MonCat.{max v u}) with
     carrier := (F ⋙ forget SemiRingCat).sections }
 #align SemiRing.sections_subsemiring SemiRingCat.sectionsSubsemiring
+-/
 
 #print SemiRingCat.limitSemiring /-
 instance limitSemiring (F : J ⥤ SemiRingCat.{max v u}) :
@@ -66,6 +70,7 @@ instance limitSemiring (F : J ⥤ SemiRingCat.{max v u}) :
 #align SemiRing.limit_semiring SemiRingCat.limitSemiring
 -/
 
+#print SemiRingCat.limitπRingHom /-
 /-- `limit.π (F ⋙ forget SemiRing) j` as a `ring_hom`. -/
 def limitπRingHom (F : J ⥤ SemiRingCat.{max v u}) (j) :
     (Types.limitCone (F ⋙ forget SemiRingCat)).pt →+* (F ⋙ forget SemiRingCat).obj j :=
@@ -76,6 +81,7 @@ def limitπRingHom (F : J ⥤ SemiRingCat.{max v u}) (j) :
     MonCat.limitπMonoidHom (F ⋙ forget₂ SemiRingCat MonCat.{max v u}) j with
     toFun := (Types.limitCone (F ⋙ forget SemiRingCat)).π.app j }
 #align SemiRing.limit_π_ring_hom SemiRingCat.limitπRingHom
+-/
 
 namespace HasLimits
 
@@ -112,7 +118,7 @@ end HasLimits
 
 open HasLimits
 
-/- ./././Mathport/Syntax/Translate/Command.lean:323:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 #print SemiRingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v} SemiRingCat.{max v u} :=
@@ -132,12 +138,14 @@ instance hasLimits : HasLimits SemiRingCat.{u} :=
 #align SemiRing.has_limits SemiRingCat.hasLimits
 -/
 
+#print SemiRingCat.forget₂AddCommMonPreservesLimitsAux /-
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂AddCommMonPreservesLimitsAux (F : J ⥤ SemiRingCat.{max v u}) :
     IsLimit ((forget₂ SemiRingCat AddCommMonCat).mapCone (limitCone F)) := by
   apply AddCommMonCat.limitConeIsLimit (F ⋙ forget₂ SemiRingCat AddCommMonCat.{max v u})
 #align SemiRing.forget₂_AddCommMon_preserves_limits_aux SemiRingCat.forget₂AddCommMonPreservesLimitsAux
+-/
 
 #print SemiRingCat.forget₂AddCommMonPreservesLimitsOfSize /-
 /-- The forgetful functor from semirings to additive commutative monoids preserves all limits.
@@ -159,12 +167,14 @@ instance forget₂AddCommMonPreservesLimits :
 #align SemiRing.forget₂_AddCommMon_preserves_limits SemiRingCat.forget₂AddCommMonPreservesLimits
 -/
 
+#print SemiRingCat.forget₂MonPreservesLimitsAux /-
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂MonPreservesLimitsAux (F : J ⥤ SemiRingCat.{max v u}) :
     IsLimit ((forget₂ SemiRingCat MonCat).mapCone (limitCone F)) := by
   apply MonCat.HasLimits.limitConeIsLimit (F ⋙ forget₂ SemiRingCat MonCat.{max v u})
 #align SemiRing.forget₂_Mon_preserves_limits_aux SemiRingCat.forget₂MonPreservesLimitsAux
+-/
 
 #print SemiRingCat.forget₂MonPreservesLimitsOfSize /-
 /-- The forgetful functor from semirings to monoids preserves all limits.
@@ -209,10 +219,12 @@ namespace CommSemiRingCat
 
 variable {J : Type v} [SmallCategory J]
 
+#print CommSemiRingCat.commSemiringObj /-
 instance commSemiringObj (F : J ⥤ CommSemiRingCat.{max v u}) (j) :
     CommSemiring ((F ⋙ forget CommSemiRingCat).obj j) := by change CommSemiring (F.obj j);
   infer_instance
 #align CommSemiRing.comm_semiring_obj CommSemiRingCat.commSemiringObj
+-/
 
 #print CommSemiRingCat.limitCommSemiring /-
 instance limitCommSemiring (F : J ⥤ CommSemiRingCat.{max v u}) :
@@ -264,7 +276,7 @@ def limitConeIsLimit (F : J ⥤ CommSemiRingCat.{max v u}) : IsLimit (limitCone
 #align CommSemiRing.limit_cone_is_limit CommSemiRingCat.limitConeIsLimit
 -/
 
-/- ./././Mathport/Syntax/Translate/Command.lean:323:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 #print CommSemiRingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommSemiRingCat.{max v u} :=
@@ -323,10 +335,13 @@ namespace RingCat
 
 variable {J : Type v} [SmallCategory J]
 
+#print RingCat.ringObj /-
 instance ringObj (F : J ⥤ RingCat.{max v u}) (j) : Ring ((F ⋙ forget RingCat).obj j) := by
   change Ring (F.obj j); infer_instance
 #align Ring.ring_obj RingCat.ringObj
+-/
 
+#print RingCat.sectionsSubring /-
 /-- The flat sections of a functor into `Ring` form a subring of all sections.
 -/
 def sectionsSubring (F : J ⥤ RingCat.{max v u}) : Subring (∀ j, F.obj j) :=
@@ -337,6 +352,7 @@ def sectionsSubring (F : J ⥤ RingCat.{max v u}) : Subring (∀ j, F.obj j) :=
     SemiRingCat.sectionsSubsemiring (F ⋙ forget₂ RingCat SemiRingCat.{max v u}) with
     carrier := (F ⋙ forget RingCat).sections }
 #align Ring.sections_subring RingCat.sectionsSubring
+-/
 
 #print RingCat.limitRing /-
 instance limitRing (F : J ⥤ RingCat.{max v u}) :
@@ -382,7 +398,7 @@ def limitConeIsLimit (F : J ⥤ RingCat.{max v u}) : IsLimit (limitCone F) :=
 #align Ring.limit_cone_is_limit RingCat.limitConeIsLimit
 -/
 
-/- ./././Mathport/Syntax/Translate/Command.lean:323:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 #print RingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} RingCat.{max v u} :=
@@ -413,12 +429,14 @@ instance forget₂SemiRingPreservesLimits : PreservesLimits (forget₂ RingCat S
 #align Ring.forget₂_SemiRing_preserves_limits RingCat.forget₂SemiRingPreservesLimits
 -/
 
+#print RingCat.forget₂AddCommGroupPreservesLimitsAux /-
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ RingCat.{max v u}) :
     IsLimit ((forget₂ RingCat AddCommGroupCat).mapCone (limitCone F)) := by
   apply AddCommGroupCat.limitConeIsLimit (F ⋙ forget₂ RingCat AddCommGroupCat.{max v u})
 #align Ring.forget₂_AddCommGroup_preserves_limits_aux RingCat.forget₂AddCommGroupPreservesLimitsAux
+-/
 
 #print RingCat.forget₂AddCommGroupPreservesLimitsOfSize /-
 /-- The forgetful functor from rings to additive commutative groups preserves all limits.
@@ -464,9 +482,11 @@ namespace CommRingCat
 
 variable {J : Type v} [SmallCategory J]
 
+#print CommRingCat.commRingObj /-
 instance commRingObj (F : J ⥤ CommRingCat.{max v u}) (j) :
     CommRing ((F ⋙ forget CommRingCat).obj j) := by change CommRing (F.obj j); infer_instance
 #align CommRing.comm_ring_obj CommRingCat.commRingObj
+-/
 
 #print CommRingCat.limitCommRing /-
 instance limitCommRing (F : J ⥤ CommRingCat.{max v u}) :
@@ -529,7 +549,7 @@ def limitConeIsLimit (F : J ⥤ CommRingCat.{max v u}) : IsLimit (limitCone F) :
 #align CommRing.limit_cone_is_limit CommRingCat.limitConeIsLimit
 -/
 
-/- ./././Mathport/Syntax/Translate/Command.lean:323:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 #print CommRingCat.hasLimitsOfSize /-
 /-- The category of commutative rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommRingCat.{max v u} :=
@@ -561,12 +581,14 @@ instance forget₂RingPreservesLimits : PreservesLimits (forget₂ CommRingCat R
 #align CommRing.forget₂_Ring_preserves_limits CommRingCat.forget₂RingPreservesLimits
 -/
 
+#print CommRingCat.forget₂CommSemiRingPreservesLimitsAux /-
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂CommSemiRingPreservesLimitsAux (F : J ⥤ CommRingCat.{max v u}) :
     IsLimit ((forget₂ CommRingCat CommSemiRingCat).mapCone (limitCone F)) := by
   apply CommSemiRingCat.limitConeIsLimit (F ⋙ forget₂ CommRingCat CommSemiRingCat.{max v u})
 #align CommRing.forget₂_CommSemiRing_preserves_limits_aux CommRingCat.forget₂CommSemiRingPreservesLimitsAux
+-/
 
 #print CommRingCat.forget₂CommSemiRingPreservesLimitsOfSize /-
 /-- The forgetful functor from commutative rings to commutative semirings preserves all limits.
Diff
@@ -231,7 +231,7 @@ instance (F : J ⥤ CommSemiRingCat.{max v u}) :
     CreatesLimit F (forget₂ CommSemiRingCat SemiRingCat.{max v u}) :=
   createsLimitOfReflectsIso fun c' t =>
     { liftedCone :=
-        { pt := CommSemiRing.of (Types.limitCone (F ⋙ forget _)).pt
+        { pt := CommSemiRingCat.of (Types.limitCone (F ⋙ forget _)).pt
           π :=
             { app := by
                 apply SemiRingCat.limitπRingHom (F ⋙ forget₂ CommSemiRingCat SemiRingCat.{max v u})
Diff
@@ -112,7 +112,7 @@ end HasLimits
 
 open HasLimits
 
-/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:323:38: unsupported irreducible non-definition -/
 #print SemiRingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v} SemiRingCat.{max v u} :=
@@ -264,7 +264,7 @@ def limitConeIsLimit (F : J ⥤ CommSemiRingCat.{max v u}) : IsLimit (limitCone
 #align CommSemiRing.limit_cone_is_limit CommSemiRingCat.limitConeIsLimit
 -/
 
-/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:323:38: unsupported irreducible non-definition -/
 #print CommSemiRingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommSemiRingCat.{max v u} :=
@@ -382,7 +382,7 @@ def limitConeIsLimit (F : J ⥤ RingCat.{max v u}) : IsLimit (limitCone F) :=
 #align Ring.limit_cone_is_limit RingCat.limitConeIsLimit
 -/
 
-/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:323:38: unsupported irreducible non-definition -/
 #print RingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} RingCat.{max v u} :=
@@ -529,7 +529,7 @@ def limitConeIsLimit (F : J ⥤ CommRingCat.{max v u}) : IsLimit (limitCone F) :
 #align CommRing.limit_cone_is_limit CommRingCat.limitConeIsLimit
 -/
 
-/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:323:38: unsupported irreducible non-definition -/
 #print CommRingCat.hasLimitsOfSize /-
 /-- The category of commutative rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommRingCat.{max v u} :=
Diff
@@ -45,22 +45,10 @@ namespace SemiRingCat
 
 variable {J : Type v} [SmallCategory J]
 
-/- warning: SemiRing.semiring_obj -> SemiRingCat.semiringObj is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2}) (j : J), Semiring.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2})) j)
-but is expected to have type
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1}) (j : J), Semiring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1}))) j)
-Case conversion may be inaccurate. Consider using '#align SemiRing.semiring_obj SemiRingCat.semiringObjₓ'. -/
 instance semiringObj (F : J ⥤ SemiRingCat.{max v u}) (j) :
     Semiring ((F ⋙ forget SemiRingCat).obj j) := by change Semiring (F.obj j); infer_instance
 #align SemiRing.semiring_obj SemiRingCat.semiringObj
 
-/- warning: SemiRing.sections_subsemiring -> SemiRingCat.sectionsSubsemiring is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2}), Subsemiring.{max u1 u2} (forall (j : J), coeSort.{succ (succ (max u1 u2)), succ (succ (max u1 u2))} SemiRingCat.{max u1 u2} Type.{max u1 u2} SemiRingCat.hasCoeToSort.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} F j)) (Pi.nonAssocSemiring.{u1, max u1 u2} J (fun (j : J) => coeSort.{succ (succ (max u1 u2)), succ (succ (max u1 u2))} SemiRingCat.{max u1 u2} Type.{max u1 u2} SemiRingCat.hasCoeToSort.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} F j)) (fun (i : J) => Semiring.toNonAssocSemiring.{max u1 u2} (coeSort.{succ (succ (max u1 u2)), succ (succ (max u1 u2))} SemiRingCat.{max u1 u2} Type.{max u1 u2} SemiRingCat.hasCoeToSort.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} F i)) (SemiRingCat.semiring.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} F i))))
-but is expected to have type
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1}), Subsemiring.{max u1 u2} (forall (j : J), CategoryTheory.Bundled.α.{max u2 u1, max u2 u1} Semiring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) SemiRingCatMax.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} F) j)) (Pi.nonAssocSemiring.{u1, max u2 u1} J (fun (j : J) => CategoryTheory.Bundled.α.{max u2 u1, max u2 u1} Semiring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) SemiRingCatMax.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} F) j)) (fun (i : J) => Semiring.toNonAssocSemiring.{max u2 u1} (CategoryTheory.Bundled.α.{max u2 u1, max u2 u1} Semiring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) SemiRingCatMax.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} F) i)) (SemiRingCat.instSemiringα.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) SemiRingCatMax.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} F) i))))
-Case conversion may be inaccurate. Consider using '#align SemiRing.sections_subsemiring SemiRingCat.sectionsSubsemiringₓ'. -/
 /-- The flat sections of a functor into `SemiRing` form a subsemiring of all sections.
 -/
 def sectionsSubsemiring (F : J ⥤ SemiRingCat.{max v u}) : Subsemiring (∀ j, F.obj j) :=
@@ -78,12 +66,6 @@ instance limitSemiring (F : J ⥤ SemiRingCat.{max v u}) :
 #align SemiRing.limit_semiring SemiRingCat.limitSemiring
 -/
 
-/- warning: SemiRing.limit_π_ring_hom -> SemiRingCat.limitπRingHom is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2}) (j : J), RingHom.{max u1 u2, max u1 u2} (CategoryTheory.Limits.Cone.pt.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2})) (CategoryTheory.Limits.Types.limitCone.{u1, u2} J _inst_1 (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2})))) (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2})) j) (Semiring.toNonAssocSemiring.{max u1 u2} (CategoryTheory.Limits.Cone.pt.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2})) (CategoryTheory.Limits.Types.limitCone.{u1, u2} J _inst_1 (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2})))) (SemiRingCat.limitSemiring.{u1, u2} J _inst_1 F)) (Semiring.toNonAssocSemiring.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2})) j) (SemiRingCat.semiringObj.{u1, u2} J _inst_1 F j))
-but is expected to have type
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1}) (j : J), RingHom.{max u2 u1, max u2 u1} (CategoryTheory.Limits.Cone.pt.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Limits.Types.limitCone.{u1, u2} J _inst_1 (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1})))) (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1}))) j) (Semiring.toNonAssocSemiring.{max u2 u1} (CategoryTheory.Limits.Cone.pt.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Limits.Types.limitCone.{u1, u2} J _inst_1 (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1})))) (SemiRingCat.limitSemiring.{u1, u2} J _inst_1 F)) (Semiring.toNonAssocSemiring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1}))) j) (SemiRingCat.semiringObj.{u1, u2} J _inst_1 F j))
-Case conversion may be inaccurate. Consider using '#align SemiRing.limit_π_ring_hom SemiRingCat.limitπRingHomₓ'. -/
 /-- `limit.π (F ⋙ forget SemiRing) j` as a `ring_hom`. -/
 def limitπRingHom (F : J ⥤ SemiRingCat.{max v u}) (j) :
     (Types.limitCone (F ⋙ forget SemiRingCat)).pt →+* (F ⋙ forget SemiRingCat).obj j :=
@@ -150,12 +132,6 @@ instance hasLimits : HasLimits SemiRingCat.{u} :=
 #align SemiRing.has_limits SemiRingCat.hasLimits
 -/
 
-/- warning: SemiRing.forget₂_AddCommMon_preserves_limits_aux -> SemiRingCat.forget₂AddCommMonPreservesLimitsAux is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2}), CategoryTheory.Limits.IsLimit.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 AddCommMonCat.{max u1 u2} AddCommMonCat.largeCategory.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} AddCommMonCat.{max u1 u2} AddCommMonCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} AddCommMonCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2} AddCommMonCat.largeCategory.{max u1 u2} AddCommMonCat.concreteCategory.{max u1 u2} SemiRingCat.hasForgetToAddCommMonCat.{max u1 u2})) (CategoryTheory.Functor.mapCone.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} AddCommMonCat.{max u1 u2} AddCommMonCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} AddCommMonCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2} AddCommMonCat.largeCategory.{max u1 u2} AddCommMonCat.concreteCategory.{max u1 u2} SemiRingCat.hasForgetToAddCommMonCat.{max u1 u2}) (SemiRingCat.HasLimits.limitCone.{u1, u2} J _inst_1 F))
-but is expected to have type
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1}), CategoryTheory.Limits.IsLimit.{u1, max u2 u1, u1, succ (max u2 u1)} J _inst_1 AddCommMonCat.{max u2 u1} instAddCommMonCatLargeCategory.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, succ (max u2 u1), succ (max u2 u1)} J _inst_1 SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} AddCommMonCat.{max u2 u1} instAddCommMonCatLargeCategory.{max u2 u1} F (CategoryTheory.forget₂.{succ (max u2 u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} AddCommMonCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1} instAddCommMonCatLargeCategory.{max u2 u1} AddCommMonCat.concreteCategory.{max u2 u1} SemiRingCat.hasForgetToAddCommMonCat.{max u2 u1})) (CategoryTheory.Functor.mapCone.{u1, max u2 u1, max u2 u1, u1, succ (max u2 u1), succ (max u2 u1)} J _inst_1 SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} AddCommMonCat.{max u2 u1} instAddCommMonCatLargeCategory.{max u2 u1} (CategoryTheory.forget₂.{succ (max u2 u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} AddCommMonCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1} instAddCommMonCatLargeCategory.{max u2 u1} AddCommMonCat.concreteCategory.{max u2 u1} SemiRingCat.hasForgetToAddCommMonCat.{max u2 u1}) F (SemiRingCat.HasLimits.limitCone.{u1, u2} J _inst_1 F))
-Case conversion may be inaccurate. Consider using '#align SemiRing.forget₂_AddCommMon_preserves_limits_aux SemiRingCat.forget₂AddCommMonPreservesLimitsAuxₓ'. -/
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂AddCommMonPreservesLimitsAux (F : J ⥤ SemiRingCat.{max v u}) :
@@ -183,12 +159,6 @@ instance forget₂AddCommMonPreservesLimits :
 #align SemiRing.forget₂_AddCommMon_preserves_limits SemiRingCat.forget₂AddCommMonPreservesLimits
 -/
 
-/- warning: SemiRing.forget₂_Mon_preserves_limits_aux -> SemiRingCat.forget₂MonPreservesLimitsAux is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2}), CategoryTheory.Limits.IsLimit.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 MonCat.{max u1 u2} MonCat.largeCategory.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} MonCat.{max u1 u2} MonCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} MonCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2} MonCat.largeCategory.{max u1 u2} MonCat.concreteCategory.{max u1 u2} SemiRingCat.hasForgetToMonCat.{max u1 u2})) (CategoryTheory.Functor.mapCone.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} MonCat.{max u1 u2} MonCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} MonCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2} MonCat.largeCategory.{max u1 u2} MonCat.concreteCategory.{max u1 u2} SemiRingCat.hasForgetToMonCat.{max u1 u2}) (SemiRingCat.HasLimits.limitCone.{u1, u2} J _inst_1 F))
-but is expected to have type
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1}), CategoryTheory.Limits.IsLimit.{u1, max u2 u1, u1, succ (max u2 u1)} J _inst_1 MonCat.{max u2 u1} instMonCatLargeCategory.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, succ (max u2 u1), succ (max u2 u1)} J _inst_1 SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} MonCat.{max u2 u1} instMonCatLargeCategory.{max u2 u1} F (CategoryTheory.forget₂.{succ (max u2 u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} MonCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1} instMonCatLargeCategory.{max u2 u1} MonCat.concreteCategory.{max u2 u1} SemiRingCat.hasForgetToMonCat.{max u2 u1})) (CategoryTheory.Functor.mapCone.{u1, max u2 u1, max u2 u1, u1, succ (max u2 u1), succ (max u2 u1)} J _inst_1 SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} MonCat.{max u2 u1} instMonCatLargeCategory.{max u2 u1} (CategoryTheory.forget₂.{succ (max u2 u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} MonCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1} instMonCatLargeCategory.{max u2 u1} MonCat.concreteCategory.{max u2 u1} SemiRingCat.hasForgetToMonCat.{max u2 u1}) F (SemiRingCat.HasLimits.limitCone.{u1, u2} J _inst_1 F))
-Case conversion may be inaccurate. Consider using '#align SemiRing.forget₂_Mon_preserves_limits_aux SemiRingCat.forget₂MonPreservesLimitsAuxₓ'. -/
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂MonPreservesLimitsAux (F : J ⥤ SemiRingCat.{max v u}) :
@@ -239,12 +209,6 @@ namespace CommSemiRingCat
 
 variable {J : Type v} [SmallCategory J]
 
-/- warning: CommSemiRing.comm_semiring_obj -> CommSemiRingCat.commSemiringObj is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 CommSemiRingCat.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2}) (j : J), CommSemiring.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 CommSemiRingCat.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} CommSemiRingCat.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2} CommSemiRingCat.concreteCategory.{max u1 u2})) j)
-but is expected to have type
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 CommSemiRingCatMax.{u1, u2} instCommSemiRingCatLargeCategory.{max u2 u1}) (j : J), CommSemiring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 CommSemiRingCatMax.{u1, u2} instCommSemiRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} CommSemiRingCat.{max u2 u1} instCommSemiRingCatLargeCategory.{max u2 u1} CommSemiRing.instConcreteCategoryCommSemiRingCatInstCommSemiRingCatLargeCategory.{max u2 u1}))) j)
-Case conversion may be inaccurate. Consider using '#align CommSemiRing.comm_semiring_obj CommSemiRingCat.commSemiringObjₓ'. -/
 instance commSemiringObj (F : J ⥤ CommSemiRingCat.{max v u}) (j) :
     CommSemiring ((F ⋙ forget CommSemiRingCat).obj j) := by change CommSemiring (F.obj j);
   infer_instance
@@ -359,22 +323,10 @@ namespace RingCat
 
 variable {J : Type v} [SmallCategory J]
 
-/- warning: Ring.ring_obj -> RingCat.ringObj is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2}) (j : J), Ring.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} RingCat.concreteCategory.{max u1 u2})) j)
-but is expected to have type
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1}) (j : J), Ring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} RingCat.{max u2 u1} instRingCatLargeCategory.{max u2 u1} RingCat.instConcreteCategoryRingCatInstRingCatLargeCategory.{max u2 u1}))) j)
-Case conversion may be inaccurate. Consider using '#align Ring.ring_obj RingCat.ringObjₓ'. -/
 instance ringObj (F : J ⥤ RingCat.{max v u}) (j) : Ring ((F ⋙ forget RingCat).obj j) := by
   change Ring (F.obj j); infer_instance
 #align Ring.ring_obj RingCat.ringObj
 
-/- warning: Ring.sections_subring -> RingCat.sectionsSubring is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2}), Subring.{max u1 u2} (forall (j : J), coeSort.{succ (succ (max u1 u2)), succ (succ (max u1 u2))} RingCat.{max u1 u2} Type.{max u1 u2} RingCat.hasCoeToSort.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} F j)) (Pi.ring.{u1, max u1 u2} J (fun (j : J) => coeSort.{succ (succ (max u1 u2)), succ (succ (max u1 u2))} RingCat.{max u1 u2} Type.{max u1 u2} RingCat.hasCoeToSort.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} F j)) (fun (i : J) => RingCat.ring.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} F i)))
-but is expected to have type
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1}), Subring.{max u1 u2} (forall (j : J), CategoryTheory.Bundled.α.{max u2 u1, max u2 u1} Ring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) RingCatMax.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} RingCatMax.{u1, u2} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1} F) j)) (Pi.ring.{u1, max u2 u1} J (fun (j : J) => CategoryTheory.Bundled.α.{max u2 u1, max u2 u1} Ring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) RingCatMax.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} RingCatMax.{u1, u2} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1} F) j)) (fun (i : J) => RingCat.instRingα_1.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) RingCatMax.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} RingCatMax.{u1, u2} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1} F) i)))
-Case conversion may be inaccurate. Consider using '#align Ring.sections_subring RingCat.sectionsSubringₓ'. -/
 /-- The flat sections of a functor into `Ring` form a subring of all sections.
 -/
 def sectionsSubring (F : J ⥤ RingCat.{max v u}) : Subring (∀ j, F.obj j) :=
@@ -461,12 +413,6 @@ instance forget₂SemiRingPreservesLimits : PreservesLimits (forget₂ RingCat S
 #align Ring.forget₂_SemiRing_preserves_limits RingCat.forget₂SemiRingPreservesLimits
 -/
 
-/- warning: Ring.forget₂_AddCommGroup_preserves_limits_aux -> RingCat.forget₂AddCommGroupPreservesLimitsAux is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2}), CategoryTheory.Limits.IsLimit.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 AddCommGroupCat.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} AddCommGroupCat.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} RingCat.{max u1 u2} AddCommGroupCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} RingCat.concreteCategory.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} AddCommGroupCat.concreteCategory.{max u1 u2} RingCat.hasForgetToAddCommGroupCat.{max u1 u2})) (CategoryTheory.Functor.mapCone.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} AddCommGroupCat.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} RingCat.{max u1 u2} AddCommGroupCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} RingCat.concreteCategory.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} AddCommGroupCat.concreteCategory.{max u1 u2} RingCat.hasForgetToAddCommGroupCat.{max u1 u2}) (RingCat.limitCone.{u1, u2} J _inst_1 F))
-but is expected to have type
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1}), CategoryTheory.Limits.IsLimit.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 AddCommGroupCat.{max u2 u1} instAddCommGroupCatLargeCategory.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1} AddCommGroupCat.{max u2 u1} instAddCommGroupCatLargeCategory.{max u2 u1} F (CategoryTheory.forget₂.{max (succ u2) (succ u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} RingCatMax.{u1, u2} AddCommGroupCat.{max u2 u1} instRingCatLargeCategory.{max u2 u1} RingCat.instConcreteCategoryRingCatInstRingCatLargeCategory.{max u2 u1} instAddCommGroupCatLargeCategory.{max u2 u1} AddCommGroupCat.concreteCategory.{max u2 u1} RingCat.hasForgetToAddCommGroupCat.{max u2 u1})) (CategoryTheory.Functor.mapCone.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1} AddCommGroupCat.{max u2 u1} instAddCommGroupCatLargeCategory.{max u2 u1} (CategoryTheory.forget₂.{max (succ u2) (succ u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} RingCatMax.{u1, u2} AddCommGroupCat.{max u2 u1} instRingCatLargeCategory.{max u2 u1} RingCat.instConcreteCategoryRingCatInstRingCatLargeCategory.{max u2 u1} instAddCommGroupCatLargeCategory.{max u2 u1} AddCommGroupCat.concreteCategory.{max u2 u1} RingCat.hasForgetToAddCommGroupCat.{max u2 u1}) F (RingCat.limitCone.{u1, u2} J _inst_1 F))
-Case conversion may be inaccurate. Consider using '#align Ring.forget₂_AddCommGroup_preserves_limits_aux RingCat.forget₂AddCommGroupPreservesLimitsAuxₓ'. -/
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ RingCat.{max v u}) :
@@ -518,12 +464,6 @@ namespace CommRingCat
 
 variable {J : Type v} [SmallCategory J]
 
-/- warning: CommRing.comm_ring_obj -> CommRingCat.commRingObj is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 CommRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2}) (j : J), CommRing.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 CommRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} CommRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2} CommRingCat.concreteCategory.{max u1 u2})) j)
-but is expected to have type
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 CommRingCatMax.{u1, u2} instCommRingCatLargeCategory.{max u2 u1}) (j : J), CommRing.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 CommRingCatMax.{u1, u2} instCommRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} CommRingCat.{max u2 u1} instCommRingCatLargeCategory.{max u2 u1} CommRingCat.instConcreteCategoryCommRingCatInstCommRingCatLargeCategory.{max u2 u1}))) j)
-Case conversion may be inaccurate. Consider using '#align CommRing.comm_ring_obj CommRingCat.commRingObjₓ'. -/
 instance commRingObj (F : J ⥤ CommRingCat.{max v u}) (j) :
     CommRing ((F ⋙ forget CommRingCat).obj j) := by change CommRing (F.obj j); infer_instance
 #align CommRing.comm_ring_obj CommRingCat.commRingObj
@@ -621,12 +561,6 @@ instance forget₂RingPreservesLimits : PreservesLimits (forget₂ CommRingCat R
 #align CommRing.forget₂_Ring_preserves_limits CommRingCat.forget₂RingPreservesLimits
 -/
 
-/- warning: CommRing.forget₂_CommSemiRing_preserves_limits_aux -> CommRingCat.forget₂CommSemiRingPreservesLimitsAux is a dubious translation:
-lean 3 declaration is
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 CommRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2}), CategoryTheory.Limits.IsLimit.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 CommSemiRingCat.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 CommRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2} CommSemiRingCat.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} CommRingCat.{max u1 u2} CommSemiRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2} CommRingCat.concreteCategory.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2} CommSemiRingCat.concreteCategory.{max u1 u2} CommRingCat.hasForgetToCommSemiRingCat.{max u1 u2})) (CategoryTheory.Functor.mapCone.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 CommRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2} CommSemiRingCat.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} CommRingCat.{max u1 u2} CommSemiRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2} CommRingCat.concreteCategory.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2} CommSemiRingCat.concreteCategory.{max u1 u2} CommRingCat.hasForgetToCommSemiRingCat.{max u1 u2}) (CommRingCat.limitCone.{u1, u2} J _inst_1 F))
-but is expected to have type
-  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 CommRingCatMax.{u1, u2} instCommRingCatLargeCategory.{max u2 u1}), CategoryTheory.Limits.IsLimit.{u1, max u2 u1, u1, succ (max u2 u1)} J _inst_1 CommSemiRingCat.{max u2 u1} instCommSemiRingCatLargeCategory.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, succ (max u2 u1), succ (max u2 u1)} J _inst_1 CommRingCat.{max u2 u1} instCommRingCatLargeCategory.{max u2 u1} CommSemiRingCat.{max u2 u1} instCommSemiRingCatLargeCategory.{max u2 u1} F (CategoryTheory.forget₂.{succ (max u2 u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} CommRingCat.{max u2 u1} CommSemiRingCat.{max u2 u1} instCommRingCatLargeCategory.{max u2 u1} CommRingCat.instConcreteCategoryCommRingCatInstCommRingCatLargeCategory.{max u2 u1} instCommSemiRingCatLargeCategory.{max u2 u1} CommSemiRing.instConcreteCategoryCommSemiRingCatInstCommSemiRingCatLargeCategory.{max u2 u1} CommRingCat.hasForgetToCommSemiRingCat.{max u2 u1})) (CategoryTheory.Functor.mapCone.{u1, max u2 u1, max u2 u1, u1, succ (max u2 u1), succ (max u2 u1)} J _inst_1 CommRingCat.{max u2 u1} instCommRingCatLargeCategory.{max u2 u1} CommSemiRingCat.{max u2 u1} instCommSemiRingCatLargeCategory.{max u2 u1} (CategoryTheory.forget₂.{succ (max u2 u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} CommRingCat.{max u2 u1} CommSemiRingCat.{max u2 u1} instCommRingCatLargeCategory.{max u2 u1} CommRingCat.instConcreteCategoryCommRingCatInstCommRingCatLargeCategory.{max u2 u1} instCommSemiRingCatLargeCategory.{max u2 u1} CommSemiRing.instConcreteCategoryCommSemiRingCatInstCommSemiRingCatLargeCategory.{max u2 u1} CommRingCat.hasForgetToCommSemiRingCat.{max u2 u1}) F (CommRingCat.limitCone.{u1, u2} J _inst_1 F))
-Case conversion may be inaccurate. Consider using '#align CommRing.forget₂_CommSemiRing_preserves_limits_aux CommRingCat.forget₂CommSemiRingPreservesLimitsAuxₓ'. -/
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂CommSemiRingPreservesLimitsAux (F : J ⥤ CommRingCat.{max v u}) :
Diff
@@ -52,10 +52,7 @@ but is expected to have type
   forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1}) (j : J), Semiring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1}))) j)
 Case conversion may be inaccurate. Consider using '#align SemiRing.semiring_obj SemiRingCat.semiringObjₓ'. -/
 instance semiringObj (F : J ⥤ SemiRingCat.{max v u}) (j) :
-    Semiring ((F ⋙ forget SemiRingCat).obj j) :=
-  by
-  change Semiring (F.obj j)
-  infer_instance
+    Semiring ((F ⋙ forget SemiRingCat).obj j) := by change Semiring (F.obj j); infer_instance
 #align SemiRing.semiring_obj SemiRingCat.semiringObj
 
 /- warning: SemiRing.sections_subsemiring -> SemiRingCat.sectionsSubsemiring is a dubious translation:
@@ -249,9 +246,7 @@ but is expected to have type
   forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 CommSemiRingCatMax.{u1, u2} instCommSemiRingCatLargeCategory.{max u2 u1}) (j : J), CommSemiring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 CommSemiRingCatMax.{u1, u2} instCommSemiRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} CommSemiRingCat.{max u2 u1} instCommSemiRingCatLargeCategory.{max u2 u1} CommSemiRing.instConcreteCategoryCommSemiRingCatInstCommSemiRingCatLargeCategory.{max u2 u1}))) j)
 Case conversion may be inaccurate. Consider using '#align CommSemiRing.comm_semiring_obj CommSemiRingCat.commSemiringObjₓ'. -/
 instance commSemiringObj (F : J ⥤ CommSemiRingCat.{max v u}) (j) :
-    CommSemiring ((F ⋙ forget CommSemiRingCat).obj j) :=
-  by
-  change CommSemiring (F.obj j)
+    CommSemiring ((F ⋙ forget CommSemiRingCat).obj j) := by change CommSemiring (F.obj j);
   infer_instance
 #align CommSemiRing.comm_semiring_obj CommSemiRingCat.commSemiringObj
 
@@ -370,10 +365,8 @@ lean 3 declaration is
 but is expected to have type
   forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1}) (j : J), Ring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} RingCat.{max u2 u1} instRingCatLargeCategory.{max u2 u1} RingCat.instConcreteCategoryRingCatInstRingCatLargeCategory.{max u2 u1}))) j)
 Case conversion may be inaccurate. Consider using '#align Ring.ring_obj RingCat.ringObjₓ'. -/
-instance ringObj (F : J ⥤ RingCat.{max v u}) (j) : Ring ((F ⋙ forget RingCat).obj j) :=
-  by
-  change Ring (F.obj j)
-  infer_instance
+instance ringObj (F : J ⥤ RingCat.{max v u}) (j) : Ring ((F ⋙ forget RingCat).obj j) := by
+  change Ring (F.obj j); infer_instance
 #align Ring.ring_obj RingCat.ringObj
 
 /- warning: Ring.sections_subring -> RingCat.sectionsSubring is a dubious translation:
@@ -532,10 +525,7 @@ but is expected to have type
   forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 CommRingCatMax.{u1, u2} instCommRingCatLargeCategory.{max u2 u1}) (j : J), CommRing.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 CommRingCatMax.{u1, u2} instCommRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} CommRingCat.{max u2 u1} instCommRingCatLargeCategory.{max u2 u1} CommRingCat.instConcreteCategoryCommRingCatInstCommRingCatLargeCategory.{max u2 u1}))) j)
 Case conversion may be inaccurate. Consider using '#align CommRing.comm_ring_obj CommRingCat.commRingObjₓ'. -/
 instance commRingObj (F : J ⥤ CommRingCat.{max v u}) (j) :
-    CommRing ((F ⋙ forget CommRingCat).obj j) :=
-  by
-  change CommRing (F.obj j)
-  infer_instance
+    CommRing ((F ⋙ forget CommRingCat).obj j) := by change CommRing (F.obj j); infer_instance
 #align CommRing.comm_ring_obj CommRingCat.commRingObj
 
 #print CommRingCat.limitCommRing /-
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 
 ! This file was ported from Lean 3 source module algebra.category.Ring.limits
-! leanprover-community/mathlib commit c43486ecf2a5a17479a32ce09e4818924145e90e
+! leanprover-community/mathlib commit 0b7c740e25651db0ba63648fbae9f9d6f941e31b
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -16,6 +16,9 @@ import Mathbin.RingTheory.Subring.Basic
 /-!
 # The category of (commutative) rings has all limits
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 Further, these limits are preserved by the forgetful functor --- that is,
 the underlying types are just the limits in the category of types.
 -/
Diff
@@ -42,6 +42,12 @@ namespace SemiRingCat
 
 variable {J : Type v} [SmallCategory J]
 
+/- warning: SemiRing.semiring_obj -> SemiRingCat.semiringObj is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2}) (j : J), Semiring.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2})) j)
+but is expected to have type
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1}) (j : J), Semiring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1}))) j)
+Case conversion may be inaccurate. Consider using '#align SemiRing.semiring_obj SemiRingCat.semiringObjₓ'. -/
 instance semiringObj (F : J ⥤ SemiRingCat.{max v u}) (j) :
     Semiring ((F ⋙ forget SemiRingCat).obj j) :=
   by
@@ -49,6 +55,12 @@ instance semiringObj (F : J ⥤ SemiRingCat.{max v u}) (j) :
   infer_instance
 #align SemiRing.semiring_obj SemiRingCat.semiringObj
 
+/- warning: SemiRing.sections_subsemiring -> SemiRingCat.sectionsSubsemiring is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2}), Subsemiring.{max u1 u2} (forall (j : J), coeSort.{succ (succ (max u1 u2)), succ (succ (max u1 u2))} SemiRingCat.{max u1 u2} Type.{max u1 u2} SemiRingCat.hasCoeToSort.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} F j)) (Pi.nonAssocSemiring.{u1, max u1 u2} J (fun (j : J) => coeSort.{succ (succ (max u1 u2)), succ (succ (max u1 u2))} SemiRingCat.{max u1 u2} Type.{max u1 u2} SemiRingCat.hasCoeToSort.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} F j)) (fun (i : J) => Semiring.toNonAssocSemiring.{max u1 u2} (coeSort.{succ (succ (max u1 u2)), succ (succ (max u1 u2))} SemiRingCat.{max u1 u2} Type.{max u1 u2} SemiRingCat.hasCoeToSort.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} F i)) (SemiRingCat.semiring.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} F i))))
+but is expected to have type
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1}), Subsemiring.{max u1 u2} (forall (j : J), CategoryTheory.Bundled.α.{max u2 u1, max u2 u1} Semiring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) SemiRingCatMax.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} F) j)) (Pi.nonAssocSemiring.{u1, max u2 u1} J (fun (j : J) => CategoryTheory.Bundled.α.{max u2 u1, max u2 u1} Semiring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) SemiRingCatMax.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} F) j)) (fun (i : J) => Semiring.toNonAssocSemiring.{max u2 u1} (CategoryTheory.Bundled.α.{max u2 u1, max u2 u1} Semiring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) SemiRingCatMax.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} F) i)) (SemiRingCat.instSemiringα.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) SemiRingCatMax.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} F) i))))
+Case conversion may be inaccurate. Consider using '#align SemiRing.sections_subsemiring SemiRingCat.sectionsSubsemiringₓ'. -/
 /-- The flat sections of a functor into `SemiRing` form a subsemiring of all sections.
 -/
 def sectionsSubsemiring (F : J ⥤ SemiRingCat.{max v u}) : Subsemiring (∀ j, F.obj j) :=
@@ -59,11 +71,19 @@ def sectionsSubsemiring (F : J ⥤ SemiRingCat.{max v u}) : Subsemiring (∀ j,
     carrier := (F ⋙ forget SemiRingCat).sections }
 #align SemiRing.sections_subsemiring SemiRingCat.sectionsSubsemiring
 
+#print SemiRingCat.limitSemiring /-
 instance limitSemiring (F : J ⥤ SemiRingCat.{max v u}) :
     Semiring (Types.limitCone (F ⋙ forget SemiRingCat.{max v u})).pt :=
   (sectionsSubsemiring F).toSemiring
 #align SemiRing.limit_semiring SemiRingCat.limitSemiring
+-/
 
+/- warning: SemiRing.limit_π_ring_hom -> SemiRingCat.limitπRingHom is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2}) (j : J), RingHom.{max u1 u2, max u1 u2} (CategoryTheory.Limits.Cone.pt.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2})) (CategoryTheory.Limits.Types.limitCone.{u1, u2} J _inst_1 (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2})))) (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2})) j) (Semiring.toNonAssocSemiring.{max u1 u2} (CategoryTheory.Limits.Cone.pt.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2})) (CategoryTheory.Limits.Types.limitCone.{u1, u2} J _inst_1 (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2})))) (SemiRingCat.limitSemiring.{u1, u2} J _inst_1 F)) (Semiring.toNonAssocSemiring.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2})) j) (SemiRingCat.semiringObj.{u1, u2} J _inst_1 F j))
+but is expected to have type
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1}) (j : J), RingHom.{max u2 u1, max u2 u1} (CategoryTheory.Limits.Cone.pt.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Limits.Types.limitCone.{u1, u2} J _inst_1 (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1})))) (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1}))) j) (Semiring.toNonAssocSemiring.{max u2 u1} (CategoryTheory.Limits.Cone.pt.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Limits.Types.limitCone.{u1, u2} J _inst_1 (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1})))) (SemiRingCat.limitSemiring.{u1, u2} J _inst_1 F)) (Semiring.toNonAssocSemiring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1}))) j) (SemiRingCat.semiringObj.{u1, u2} J _inst_1 F j))
+Case conversion may be inaccurate. Consider using '#align SemiRing.limit_π_ring_hom SemiRingCat.limitπRingHomₓ'. -/
 /-- `limit.π (F ⋙ forget SemiRing) j` as a `ring_hom`. -/
 def limitπRingHom (F : J ⥤ SemiRingCat.{max v u}) (j) :
     (Types.limitCone (F ⋙ forget SemiRingCat)).pt →+* (F ⋙ forget SemiRingCat).obj j :=
@@ -77,6 +97,7 @@ def limitπRingHom (F : J ⥤ SemiRingCat.{max v u}) (j) :
 
 namespace HasLimits
 
+#print SemiRingCat.HasLimits.limitCone /-
 -- The next two definitions are used in the construction of `has_limits SemiRing`.
 -- After that, the limits should be constructed using the generic limits API,
 -- e.g. `limit F`, `limit.cone F`, and `limit.is_limit F`.
@@ -91,7 +112,9 @@ def limitCone (F : J ⥤ SemiRingCat.{max v u}) : Cone F
       naturality' := fun j j' f =>
         RingHom.coe_inj ((Types.limitCone (F ⋙ forget _)).π.naturality f) }
 #align SemiRing.has_limits.limit_cone SemiRingCat.HasLimits.limitCone
+-/
 
+#print SemiRingCat.HasLimits.limitConeIsLimit /-
 /-- Witness that the limit cone in `SemiRing` is a limit cone.
 (Internal use only; use the limits API.)
 -/
@@ -101,12 +124,14 @@ def limitConeIsLimit (F : J ⥤ SemiRingCat.{max v u}) : IsLimit (limitCone F) :
         (fun s => ⟨_, _, _, _, _⟩) fun s => rfl <;>
     tidy
 #align SemiRing.has_limits.limit_cone_is_limit SemiRingCat.HasLimits.limitConeIsLimit
+-/
 
 end HasLimits
 
 open HasLimits
 
 /- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
+#print SemiRingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v} SemiRingCat.{max v u} :=
   {
@@ -117,11 +142,20 @@ irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v} SemiRingCat.{max v u} :=
             { Cone := limit_cone F
               IsLimit := limit_cone_is_limit F } } }
 #align SemiRing.has_limits_of_size SemiRingCat.hasLimitsOfSize
+-/
 
+#print SemiRingCat.hasLimits /-
 instance hasLimits : HasLimits SemiRingCat.{u} :=
   SemiRingCat.hasLimitsOfSize.{u, u}
 #align SemiRing.has_limits SemiRingCat.hasLimits
+-/
 
+/- warning: SemiRing.forget₂_AddCommMon_preserves_limits_aux -> SemiRingCat.forget₂AddCommMonPreservesLimitsAux is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2}), CategoryTheory.Limits.IsLimit.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 AddCommMonCat.{max u1 u2} AddCommMonCat.largeCategory.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} AddCommMonCat.{max u1 u2} AddCommMonCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} AddCommMonCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2} AddCommMonCat.largeCategory.{max u1 u2} AddCommMonCat.concreteCategory.{max u1 u2} SemiRingCat.hasForgetToAddCommMonCat.{max u1 u2})) (CategoryTheory.Functor.mapCone.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} AddCommMonCat.{max u1 u2} AddCommMonCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} AddCommMonCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2} AddCommMonCat.largeCategory.{max u1 u2} AddCommMonCat.concreteCategory.{max u1 u2} SemiRingCat.hasForgetToAddCommMonCat.{max u1 u2}) (SemiRingCat.HasLimits.limitCone.{u1, u2} J _inst_1 F))
+but is expected to have type
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1}), CategoryTheory.Limits.IsLimit.{u1, max u2 u1, u1, succ (max u2 u1)} J _inst_1 AddCommMonCat.{max u2 u1} instAddCommMonCatLargeCategory.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, succ (max u2 u1), succ (max u2 u1)} J _inst_1 SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} AddCommMonCat.{max u2 u1} instAddCommMonCatLargeCategory.{max u2 u1} F (CategoryTheory.forget₂.{succ (max u2 u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} AddCommMonCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1} instAddCommMonCatLargeCategory.{max u2 u1} AddCommMonCat.concreteCategory.{max u2 u1} SemiRingCat.hasForgetToAddCommMonCat.{max u2 u1})) (CategoryTheory.Functor.mapCone.{u1, max u2 u1, max u2 u1, u1, succ (max u2 u1), succ (max u2 u1)} J _inst_1 SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} AddCommMonCat.{max u2 u1} instAddCommMonCatLargeCategory.{max u2 u1} (CategoryTheory.forget₂.{succ (max u2 u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} AddCommMonCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1} instAddCommMonCatLargeCategory.{max u2 u1} AddCommMonCat.concreteCategory.{max u2 u1} SemiRingCat.hasForgetToAddCommMonCat.{max u2 u1}) F (SemiRingCat.HasLimits.limitCone.{u1, u2} J _inst_1 F))
+Case conversion may be inaccurate. Consider using '#align SemiRing.forget₂_AddCommMon_preserves_limits_aux SemiRingCat.forget₂AddCommMonPreservesLimitsAuxₓ'. -/
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂AddCommMonPreservesLimitsAux (F : J ⥤ SemiRingCat.{max v u}) :
@@ -129,6 +163,7 @@ def forget₂AddCommMonPreservesLimitsAux (F : J ⥤ SemiRingCat.{max v u}) :
   apply AddCommMonCat.limitConeIsLimit (F ⋙ forget₂ SemiRingCat AddCommMonCat.{max v u})
 #align SemiRing.forget₂_AddCommMon_preserves_limits_aux SemiRingCat.forget₂AddCommMonPreservesLimitsAux
 
+#print SemiRingCat.forget₂AddCommMonPreservesLimitsOfSize /-
 /-- The forgetful functor from semirings to additive commutative monoids preserves all limits.
 -/
 instance forget₂AddCommMonPreservesLimitsOfSize :
@@ -139,12 +174,21 @@ instance forget₂AddCommMonPreservesLimitsOfSize :
         preserves_limit_of_preserves_limit_cone (limit_cone_is_limit F)
           (forget₂_AddCommMon_preserves_limits_aux F) }
 #align SemiRing.forget₂_AddCommMon_preserves_limits_of_size SemiRingCat.forget₂AddCommMonPreservesLimitsOfSize
+-/
 
+#print SemiRingCat.forget₂AddCommMonPreservesLimits /-
 instance forget₂AddCommMonPreservesLimits :
     PreservesLimits (forget₂ SemiRingCat AddCommMonCat.{u}) :=
   SemiRingCat.forget₂AddCommMonPreservesLimitsOfSize.{u, u}
 #align SemiRing.forget₂_AddCommMon_preserves_limits SemiRingCat.forget₂AddCommMonPreservesLimits
+-/
 
+/- warning: SemiRing.forget₂_Mon_preserves_limits_aux -> SemiRingCat.forget₂MonPreservesLimitsAux is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2}), CategoryTheory.Limits.IsLimit.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 MonCat.{max u1 u2} MonCat.largeCategory.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} MonCat.{max u1 u2} MonCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} MonCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2} MonCat.largeCategory.{max u1 u2} MonCat.concreteCategory.{max u1 u2} SemiRingCat.hasForgetToMonCat.{max u1 u2})) (CategoryTheory.Functor.mapCone.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 SemiRingCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} MonCat.{max u1 u2} MonCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} SemiRingCat.{max u1 u2} MonCat.{max u1 u2} SemiRingCat.largeCategory.{max u1 u2} SemiRingCat.concreteCategory.{max u1 u2} MonCat.largeCategory.{max u1 u2} MonCat.concreteCategory.{max u1 u2} SemiRingCat.hasForgetToMonCat.{max u1 u2}) (SemiRingCat.HasLimits.limitCone.{u1, u2} J _inst_1 F))
+but is expected to have type
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 SemiRingCatMax.{u1, u2} instSemiRingCatLargeCategory.{max u2 u1}), CategoryTheory.Limits.IsLimit.{u1, max u2 u1, u1, succ (max u2 u1)} J _inst_1 MonCat.{max u2 u1} instMonCatLargeCategory.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, succ (max u2 u1), succ (max u2 u1)} J _inst_1 SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} MonCat.{max u2 u1} instMonCatLargeCategory.{max u2 u1} F (CategoryTheory.forget₂.{succ (max u2 u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} MonCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1} instMonCatLargeCategory.{max u2 u1} MonCat.concreteCategory.{max u2 u1} SemiRingCat.hasForgetToMonCat.{max u2 u1})) (CategoryTheory.Functor.mapCone.{u1, max u2 u1, max u2 u1, u1, succ (max u2 u1), succ (max u2 u1)} J _inst_1 SemiRingCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} MonCat.{max u2 u1} instMonCatLargeCategory.{max u2 u1} (CategoryTheory.forget₂.{succ (max u2 u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} SemiRingCat.{max u2 u1} MonCat.{max u2 u1} instSemiRingCatLargeCategory.{max u2 u1} SemiRingCat.instConcreteCategorySemiRingCatInstSemiRingCatLargeCategory.{max u2 u1} instMonCatLargeCategory.{max u2 u1} MonCat.concreteCategory.{max u2 u1} SemiRingCat.hasForgetToMonCat.{max u2 u1}) F (SemiRingCat.HasLimits.limitCone.{u1, u2} J _inst_1 F))
+Case conversion may be inaccurate. Consider using '#align SemiRing.forget₂_Mon_preserves_limits_aux SemiRingCat.forget₂MonPreservesLimitsAuxₓ'. -/
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂MonPreservesLimitsAux (F : J ⥤ SemiRingCat.{max v u}) :
@@ -152,6 +196,7 @@ def forget₂MonPreservesLimitsAux (F : J ⥤ SemiRingCat.{max v u}) :
   apply MonCat.HasLimits.limitConeIsLimit (F ⋙ forget₂ SemiRingCat MonCat.{max v u})
 #align SemiRing.forget₂_Mon_preserves_limits_aux SemiRingCat.forget₂MonPreservesLimitsAux
 
+#print SemiRingCat.forget₂MonPreservesLimitsOfSize /-
 /-- The forgetful functor from semirings to monoids preserves all limits.
 -/
 instance forget₂MonPreservesLimitsOfSize :
@@ -162,11 +207,15 @@ instance forget₂MonPreservesLimitsOfSize :
         preserves_limit_of_preserves_limit_cone (limit_cone_is_limit F)
           (forget₂_Mon_preserves_limits_aux F) }
 #align SemiRing.forget₂_Mon_preserves_limits_of_size SemiRingCat.forget₂MonPreservesLimitsOfSize
+-/
 
+#print SemiRingCat.forget₂MonPreservesLimits /-
 instance forget₂MonPreservesLimits : PreservesLimits (forget₂ SemiRingCat MonCat.{u}) :=
   SemiRingCat.forget₂MonPreservesLimitsOfSize.{u, u}
 #align SemiRing.forget₂_Mon_preserves_limits SemiRingCat.forget₂MonPreservesLimits
+-/
 
+#print SemiRingCat.forgetPreservesLimitsOfSize /-
 /-- The forgetful functor from semirings to types preserves all limits.
 -/
 instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget SemiRingCat.{max v u})
@@ -176,10 +225,13 @@ instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget Semi
         preserves_limit_of_preserves_limit_cone (limit_cone_is_limit F)
           (types.limit_cone_is_limit (F ⋙ forget _)) }
 #align SemiRing.forget_preserves_limits_of_size SemiRingCat.forgetPreservesLimitsOfSize
+-/
 
+#print SemiRingCat.forgetPreservesLimits /-
 instance forgetPreservesLimits : PreservesLimits (forget SemiRingCat.{u}) :=
   SemiRingCat.forgetPreservesLimitsOfSize.{u, u}
 #align SemiRing.forget_preserves_limits SemiRingCat.forgetPreservesLimits
+-/
 
 end SemiRingCat
 
@@ -187,6 +239,12 @@ namespace CommSemiRingCat
 
 variable {J : Type v} [SmallCategory J]
 
+/- warning: CommSemiRing.comm_semiring_obj -> CommSemiRingCat.commSemiringObj is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 CommSemiRingCat.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2}) (j : J), CommSemiring.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 CommSemiRingCat.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} CommSemiRingCat.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2} CommSemiRingCat.concreteCategory.{max u1 u2})) j)
+but is expected to have type
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 CommSemiRingCatMax.{u1, u2} instCommSemiRingCatLargeCategory.{max u2 u1}) (j : J), CommSemiring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 CommSemiRingCatMax.{u1, u2} instCommSemiRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} CommSemiRingCat.{max u2 u1} instCommSemiRingCatLargeCategory.{max u2 u1} CommSemiRing.instConcreteCategoryCommSemiRingCatInstCommSemiRingCatLargeCategory.{max u2 u1}))) j)
+Case conversion may be inaccurate. Consider using '#align CommSemiRing.comm_semiring_obj CommSemiRingCat.commSemiringObjₓ'. -/
 instance commSemiringObj (F : J ⥤ CommSemiRingCat.{max v u}) (j) :
     CommSemiring ((F ⋙ forget CommSemiRingCat).obj j) :=
   by
@@ -194,11 +252,13 @@ instance commSemiringObj (F : J ⥤ CommSemiRingCat.{max v u}) (j) :
   infer_instance
 #align CommSemiRing.comm_semiring_obj CommSemiRingCat.commSemiringObj
 
+#print CommSemiRingCat.limitCommSemiring /-
 instance limitCommSemiring (F : J ⥤ CommSemiRingCat.{max v u}) :
     CommSemiring (Types.limitCone (F ⋙ forget CommSemiRingCat.{max v u})).pt :=
   @Subsemiring.toCommSemiring (∀ j, F.obj j) _
     (SemiRingCat.sectionsSubsemiring (F ⋙ forget₂ CommSemiRingCat SemiRingCat.{max v u}))
 #align CommSemiRing.limit_comm_semiring CommSemiRingCat.limitCommSemiring
+-/
 
 /-- We show that the forgetful functor `CommSemiRing ⥤ SemiRing` creates limits.
 
@@ -224,21 +284,26 @@ instance (F : J ⥤ CommSemiRingCat.{max v u}) :
             (SemiRingCat.HasLimits.limitConeIsLimit _).lift ((forget₂ _ SemiRingCat).mapCone s))
           fun s => rfl }
 
+#print CommSemiRingCat.limitCone /-
 /-- A choice of limit cone for a functor into `CommSemiRing`.
 (Generally, you'll just want to use `limit F`.)
 -/
 def limitCone (F : J ⥤ CommSemiRingCat.{max v u}) : Cone F :=
   liftLimit (limit.isLimit (F ⋙ forget₂ CommSemiRingCat SemiRingCat.{max v u}))
 #align CommSemiRing.limit_cone CommSemiRingCat.limitCone
+-/
 
+#print CommSemiRingCat.limitConeIsLimit /-
 /-- The chosen cone is a limit cone.
 (Generally, you'll just want to use `limit.cone F`.)
 -/
 def limitConeIsLimit (F : J ⥤ CommSemiRingCat.{max v u}) : IsLimit (limitCone F) :=
   liftedLimitIsLimit _
 #align CommSemiRing.limit_cone_is_limit CommSemiRingCat.limitConeIsLimit
+-/
 
 /- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
+#print CommSemiRingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommSemiRingCat.{max v u} :=
   {
@@ -247,23 +312,31 @@ irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommSemiRingCat.{max v
         HasLimit := fun F =>
           has_limit_of_created F (forget₂ CommSemiRingCat SemiRingCat.{max v u}) } }
 #align CommSemiRing.has_limits_of_size CommSemiRingCat.hasLimitsOfSize
+-/
 
+#print CommSemiRingCat.hasLimits /-
 instance hasLimits : HasLimits CommSemiRingCat.{u} :=
   CommSemiRingCat.hasLimitsOfSize.{u, u}
 #align CommSemiRing.has_limits CommSemiRingCat.hasLimits
+-/
 
+#print CommSemiRingCat.forget₂SemiRingPreservesLimitsOfSize /-
 /-- The forgetful functor from rings to semirings preserves all limits.
 -/
 instance forget₂SemiRingPreservesLimitsOfSize :
     PreservesLimitsOfSize.{v, v} (forget₂ CommSemiRingCat SemiRingCat.{max v u})
     where PreservesLimitsOfShape J 𝒥 := { PreservesLimit := fun F => by infer_instance }
 #align CommSemiRing.forget₂_SemiRing_preserves_limits_of_size CommSemiRingCat.forget₂SemiRingPreservesLimitsOfSize
+-/
 
+#print CommSemiRingCat.forget₂SemiRingPreservesLimits /-
 instance forget₂SemiRingPreservesLimits :
     PreservesLimits (forget₂ CommSemiRingCat SemiRingCat.{u}) :=
   CommSemiRingCat.forget₂SemiRingPreservesLimitsOfSize.{u, u}
 #align CommSemiRing.forget₂_SemiRing_preserves_limits CommSemiRingCat.forget₂SemiRingPreservesLimits
+-/
 
+#print CommSemiRingCat.forgetPreservesLimitsOfSize /-
 /-- The forgetful functor from rings to types preserves all limits. (That is, the underlying
 types could have been computed instead as limits in the category of types.)
 -/
@@ -274,10 +347,13 @@ instance forgetPreservesLimitsOfSize :
       PreservesLimit := fun F =>
         limits.comp_preserves_limit (forget₂ CommSemiRingCat SemiRingCat) (forget SemiRingCat) }
 #align CommSemiRing.forget_preserves_limits_of_size CommSemiRingCat.forgetPreservesLimitsOfSize
+-/
 
+#print CommSemiRingCat.forgetPreservesLimits /-
 instance forgetPreservesLimits : PreservesLimits (forget CommSemiRingCat.{u}) :=
   CommSemiRingCat.forgetPreservesLimitsOfSize.{u, u}
 #align CommSemiRing.forget_preserves_limits CommSemiRingCat.forgetPreservesLimits
+-/
 
 end CommSemiRingCat
 
@@ -285,12 +361,24 @@ namespace RingCat
 
 variable {J : Type v} [SmallCategory J]
 
+/- warning: Ring.ring_obj -> RingCat.ringObj is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2}) (j : J), Ring.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} RingCat.concreteCategory.{max u1 u2})) j)
+but is expected to have type
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1}) (j : J), Ring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} RingCat.{max u2 u1} instRingCatLargeCategory.{max u2 u1} RingCat.instConcreteCategoryRingCatInstRingCatLargeCategory.{max u2 u1}))) j)
+Case conversion may be inaccurate. Consider using '#align Ring.ring_obj RingCat.ringObjₓ'. -/
 instance ringObj (F : J ⥤ RingCat.{max v u}) (j) : Ring ((F ⋙ forget RingCat).obj j) :=
   by
   change Ring (F.obj j)
   infer_instance
 #align Ring.ring_obj RingCat.ringObj
 
+/- warning: Ring.sections_subring -> RingCat.sectionsSubring is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2}), Subring.{max u1 u2} (forall (j : J), coeSort.{succ (succ (max u1 u2)), succ (succ (max u1 u2))} RingCat.{max u1 u2} Type.{max u1 u2} RingCat.hasCoeToSort.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} F j)) (Pi.ring.{u1, max u1 u2} J (fun (j : J) => coeSort.{succ (succ (max u1 u2)), succ (succ (max u1 u2))} RingCat.{max u1 u2} Type.{max u1 u2} RingCat.hasCoeToSort.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} F j)) (fun (i : J) => RingCat.ring.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} F i)))
+but is expected to have type
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1}), Subring.{max u1 u2} (forall (j : J), CategoryTheory.Bundled.α.{max u2 u1, max u2 u1} Ring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) RingCatMax.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} RingCatMax.{u1, u2} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1} F) j)) (Pi.ring.{u1, max u2 u1} J (fun (j : J) => CategoryTheory.Bundled.α.{max u2 u1, max u2 u1} Ring.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) RingCatMax.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} RingCatMax.{u1, u2} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1} F) j)) (fun (i : J) => RingCat.instRingα_1.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) RingCatMax.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} RingCatMax.{u1, u2} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1} F) i)))
+Case conversion may be inaccurate. Consider using '#align Ring.sections_subring RingCat.sectionsSubringₓ'. -/
 /-- The flat sections of a functor into `Ring` form a subring of all sections.
 -/
 def sectionsSubring (F : J ⥤ RingCat.{max v u}) : Subring (∀ j, F.obj j) :=
@@ -302,10 +390,12 @@ def sectionsSubring (F : J ⥤ RingCat.{max v u}) : Subring (∀ j, F.obj j) :=
     carrier := (F ⋙ forget RingCat).sections }
 #align Ring.sections_subring RingCat.sectionsSubring
 
+#print RingCat.limitRing /-
 instance limitRing (F : J ⥤ RingCat.{max v u}) :
     Ring (Types.limitCone (F ⋙ forget RingCat.{max v u})).pt :=
   (sectionsSubring F).toRing
 #align Ring.limit_ring RingCat.limitRing
+-/
 
 /-- We show that the forgetful functor `CommRing ⥤ Ring` creates limits.
 
@@ -326,43 +416,61 @@ instance (F : J ⥤ RingCat.{max v u}) : CreatesLimit F (forget₂ RingCat SemiR
         IsLimit.ofFaithful (forget₂ RingCat SemiRingCat.{max v u})
           (by apply SemiRingCat.HasLimits.limitConeIsLimit _) (fun s => _) fun s => rfl }
 
+#print RingCat.limitCone /-
 /-- A choice of limit cone for a functor into `Ring`.
 (Generally, you'll just want to use `limit F`.)
 -/
 def limitCone (F : J ⥤ RingCat.{max v u}) : Cone F :=
   liftLimit (limit.isLimit (F ⋙ forget₂ RingCat SemiRingCat.{max v u}))
 #align Ring.limit_cone RingCat.limitCone
+-/
 
+#print RingCat.limitConeIsLimit /-
 /-- The chosen cone is a limit cone.
 (Generally, you'll just want to use `limit.cone F`.)
 -/
 def limitConeIsLimit (F : J ⥤ RingCat.{max v u}) : IsLimit (limitCone F) :=
   liftedLimitIsLimit _
 #align Ring.limit_cone_is_limit RingCat.limitConeIsLimit
+-/
 
 /- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
+#print RingCat.hasLimitsOfSize /-
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} RingCat.{max v u} :=
   {
     HasLimitsOfShape := fun J 𝒥 =>
       { HasLimit := fun F => has_limit_of_created F (forget₂ RingCat SemiRingCat.{max v u}) } }
 #align Ring.has_limits_of_size RingCat.hasLimitsOfSize
+-/
 
+#print RingCat.hasLimits /-
 instance hasLimits : HasLimits RingCat.{u} :=
   RingCat.hasLimitsOfSize.{u, u}
 #align Ring.has_limits RingCat.hasLimits
+-/
 
+#print RingCat.forget₂SemiRingPreservesLimitsOfSize /-
 /-- The forgetful functor from rings to semirings preserves all limits.
 -/
 instance forget₂SemiRingPreservesLimitsOfSize :
     PreservesLimitsOfSize.{v, v} (forget₂ RingCat SemiRingCat.{max v u})
     where PreservesLimitsOfShape J 𝒥 := { PreservesLimit := fun F => by infer_instance }
 #align Ring.forget₂_SemiRing_preserves_limits_of_size RingCat.forget₂SemiRingPreservesLimitsOfSize
+-/
 
+#print RingCat.forget₂SemiRingPreservesLimits /-
 instance forget₂SemiRingPreservesLimits : PreservesLimits (forget₂ RingCat SemiRingCat.{u}) :=
   RingCat.forget₂SemiRingPreservesLimitsOfSize.{u, u}
 #align Ring.forget₂_SemiRing_preserves_limits RingCat.forget₂SemiRingPreservesLimits
+-/
 
+/- warning: Ring.forget₂_AddCommGroup_preserves_limits_aux -> RingCat.forget₂AddCommGroupPreservesLimitsAux is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2}), CategoryTheory.Limits.IsLimit.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 AddCommGroupCat.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} AddCommGroupCat.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} RingCat.{max u1 u2} AddCommGroupCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} RingCat.concreteCategory.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} AddCommGroupCat.concreteCategory.{max u1 u2} RingCat.hasForgetToAddCommGroupCat.{max u1 u2})) (CategoryTheory.Functor.mapCone.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 RingCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} AddCommGroupCat.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} RingCat.{max u1 u2} AddCommGroupCat.{max u1 u2} RingCat.largeCategory.{max u1 u2} RingCat.concreteCategory.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} AddCommGroupCat.concreteCategory.{max u1 u2} RingCat.hasForgetToAddCommGroupCat.{max u1 u2}) (RingCat.limitCone.{u1, u2} J _inst_1 F))
+but is expected to have type
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1}), CategoryTheory.Limits.IsLimit.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 AddCommGroupCat.{max u2 u1} instAddCommGroupCatLargeCategory.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1} AddCommGroupCat.{max u2 u1} instAddCommGroupCatLargeCategory.{max u2 u1} F (CategoryTheory.forget₂.{max (succ u2) (succ u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} RingCatMax.{u1, u2} AddCommGroupCat.{max u2 u1} instRingCatLargeCategory.{max u2 u1} RingCat.instConcreteCategoryRingCatInstRingCatLargeCategory.{max u2 u1} instAddCommGroupCatLargeCategory.{max u2 u1} AddCommGroupCat.concreteCategory.{max u2 u1} RingCat.hasForgetToAddCommGroupCat.{max u2 u1})) (CategoryTheory.Functor.mapCone.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 RingCatMax.{u1, u2} instRingCatLargeCategory.{max u2 u1} AddCommGroupCat.{max u2 u1} instAddCommGroupCatLargeCategory.{max u2 u1} (CategoryTheory.forget₂.{max (succ u2) (succ u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} RingCatMax.{u1, u2} AddCommGroupCat.{max u2 u1} instRingCatLargeCategory.{max u2 u1} RingCat.instConcreteCategoryRingCatInstRingCatLargeCategory.{max u2 u1} instAddCommGroupCatLargeCategory.{max u2 u1} AddCommGroupCat.concreteCategory.{max u2 u1} RingCat.hasForgetToAddCommGroupCat.{max u2 u1}) F (RingCat.limitCone.{u1, u2} J _inst_1 F))
+Case conversion may be inaccurate. Consider using '#align Ring.forget₂_AddCommGroup_preserves_limits_aux RingCat.forget₂AddCommGroupPreservesLimitsAuxₓ'. -/
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ RingCat.{max v u}) :
@@ -370,6 +478,7 @@ def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ RingCat.{max v u}) :
   apply AddCommGroupCat.limitConeIsLimit (F ⋙ forget₂ RingCat AddCommGroupCat.{max v u})
 #align Ring.forget₂_AddCommGroup_preserves_limits_aux RingCat.forget₂AddCommGroupPreservesLimitsAux
 
+#print RingCat.forget₂AddCommGroupPreservesLimitsOfSize /-
 /-- The forgetful functor from rings to additive commutative groups preserves all limits.
 -/
 instance forget₂AddCommGroupPreservesLimitsOfSize :
@@ -380,12 +489,16 @@ instance forget₂AddCommGroupPreservesLimitsOfSize :
         preserves_limit_of_preserves_limit_cone (limit_cone_is_limit F)
           (forget₂_AddCommGroup_preserves_limits_aux F) }
 #align Ring.forget₂_AddCommGroup_preserves_limits_of_size RingCat.forget₂AddCommGroupPreservesLimitsOfSize
+-/
 
+#print RingCat.forget₂AddCommGroupPreservesLimits /-
 instance forget₂AddCommGroupPreservesLimits :
     PreservesLimits (forget₂ RingCat AddCommGroupCat.{u}) :=
   RingCat.forget₂AddCommGroupPreservesLimitsOfSize.{u, u}
 #align Ring.forget₂_AddCommGroup_preserves_limits RingCat.forget₂AddCommGroupPreservesLimits
+-/
 
+#print RingCat.forgetPreservesLimitsOfSize /-
 /-- The forgetful functor from rings to types preserves all limits. (That is, the underlying
 types could have been computed instead as limits in the category of types.)
 -/
@@ -395,10 +508,13 @@ instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget Ring
       PreservesLimit := fun F =>
         limits.comp_preserves_limit (forget₂ RingCat SemiRingCat) (forget SemiRingCat.{max v u}) }
 #align Ring.forget_preserves_limits_of_size RingCat.forgetPreservesLimitsOfSize
+-/
 
+#print RingCat.forgetPreservesLimits /-
 instance forgetPreservesLimits : PreservesLimits (forget RingCat.{u}) :=
   RingCat.forgetPreservesLimitsOfSize.{u, u}
 #align Ring.forget_preserves_limits RingCat.forgetPreservesLimits
+-/
 
 end RingCat
 
@@ -406,6 +522,12 @@ namespace CommRingCat
 
 variable {J : Type v} [SmallCategory J]
 
+/- warning: CommRing.comm_ring_obj -> CommRingCat.commRingObj is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 CommRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2}) (j : J), CommRing.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 CommRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2} Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{succ (max u1 u2), max u1 u2, max u1 u2} CommRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2} CommRingCat.concreteCategory.{max u1 u2})) j)
+but is expected to have type
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 CommRingCatMax.{u1, u2} instCommRingCatLargeCategory.{max u2 u1}) (j : J), CommRing.{max u2 u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u1, max (succ u2) (succ u1)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_1)) Type.{max u2 u1} (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (succ u2) (succ u1)} Type.{max u2 u1} CategoryTheory.types.{max u2 u1})) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 Type.{max u2 u1} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, max (succ u2) (succ u1), max (succ u2) (succ u1)} J _inst_1 CommRingCatMax.{u1, u2} instCommRingCatLargeCategory.{max u2 u1} Type.{max u2 u1} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{succ (max u2 u1), max u2 u1, max u2 u1} CommRingCat.{max u2 u1} instCommRingCatLargeCategory.{max u2 u1} CommRingCat.instConcreteCategoryCommRingCatInstCommRingCatLargeCategory.{max u2 u1}))) j)
+Case conversion may be inaccurate. Consider using '#align CommRing.comm_ring_obj CommRingCat.commRingObjₓ'. -/
 instance commRingObj (F : J ⥤ CommRingCat.{max v u}) (j) :
     CommRing ((F ⋙ forget CommRingCat).obj j) :=
   by
@@ -413,11 +535,13 @@ instance commRingObj (F : J ⥤ CommRingCat.{max v u}) (j) :
   infer_instance
 #align CommRing.comm_ring_obj CommRingCat.commRingObj
 
+#print CommRingCat.limitCommRing /-
 instance limitCommRing (F : J ⥤ CommRingCat.{max v u}) :
     CommRing (Types.limitCone (F ⋙ forget CommRingCat.{max v u})).pt :=
   @Subring.toCommRing (∀ j, F.obj j) _
     (RingCat.sectionsSubring (F ⋙ forget₂ CommRingCat RingCat.{max v u}))
 #align CommRing.limit_comm_ring CommRingCat.limitCommRing
+-/
 
 /-- We show that the forgetful functor `CommRing ⥤ Ring` creates limits.
 
@@ -454,32 +578,41 @@ instance (F : J ⥤ CommRingCat.{max v u}) : CreatesLimit F (forget₂ CommRingC
           (fun s => (RingCat.limitConeIsLimit _).lift ((forget₂ _ RingCat.{max v u}).mapCone s))
           fun s => rfl }
 
+#print CommRingCat.limitCone /-
 /-- A choice of limit cone for a functor into `CommRing`.
 (Generally, you'll just want to use `limit F`.)
 -/
 def limitCone (F : J ⥤ CommRingCat.{max v u}) : Cone F :=
   liftLimit (limit.isLimit (F ⋙ forget₂ CommRingCat RingCat.{max v u}))
 #align CommRing.limit_cone CommRingCat.limitCone
+-/
 
+#print CommRingCat.limitConeIsLimit /-
 /-- The chosen cone is a limit cone.
 (Generally, you'll just want to use `limit.cone F`.)
 -/
 def limitConeIsLimit (F : J ⥤ CommRingCat.{max v u}) : IsLimit (limitCone F) :=
   liftedLimitIsLimit _
 #align CommRing.limit_cone_is_limit CommRingCat.limitConeIsLimit
+-/
 
 /- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
+#print CommRingCat.hasLimitsOfSize /-
 /-- The category of commutative rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommRingCat.{max v u} :=
   {
     HasLimitsOfShape := fun J 𝒥 =>
       { HasLimit := fun F => has_limit_of_created F (forget₂ CommRingCat RingCat.{max v u}) } }
 #align CommRing.has_limits_of_size CommRingCat.hasLimitsOfSize
+-/
 
+#print CommRingCat.hasLimits /-
 instance hasLimits : HasLimits CommRingCat.{u} :=
   CommRingCat.hasLimitsOfSize.{u, u}
 #align CommRing.has_limits CommRingCat.hasLimits
+-/
 
+#print CommRingCat.forget₂RingPreservesLimitsOfSize /-
 /-- The forgetful functor from commutative rings to rings preserves all limits.
 (That is, the underlying rings could have been computed instead as limits in the category of rings.)
 -/
@@ -487,11 +620,20 @@ instance forget₂RingPreservesLimitsOfSize :
     PreservesLimitsOfSize.{v, v} (forget₂ CommRingCat RingCat.{max v u})
     where PreservesLimitsOfShape J 𝒥 := { PreservesLimit := fun F => by infer_instance }
 #align CommRing.forget₂_Ring_preserves_limits_of_size CommRingCat.forget₂RingPreservesLimitsOfSize
+-/
 
+#print CommRingCat.forget₂RingPreservesLimits /-
 instance forget₂RingPreservesLimits : PreservesLimits (forget₂ CommRingCat RingCat.{u}) :=
   CommRingCat.forget₂RingPreservesLimitsOfSize.{u, u}
 #align CommRing.forget₂_Ring_preserves_limits CommRingCat.forget₂RingPreservesLimits
+-/
 
+/- warning: CommRing.forget₂_CommSemiRing_preserves_limits_aux -> CommRingCat.forget₂CommSemiRingPreservesLimitsAux is a dubious translation:
+lean 3 declaration is
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 CommRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2}), CategoryTheory.Limits.IsLimit.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_1 CommSemiRingCat.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 CommRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2} CommSemiRingCat.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} CommRingCat.{max u1 u2} CommSemiRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2} CommRingCat.concreteCategory.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2} CommSemiRingCat.concreteCategory.{max u1 u2} CommRingCat.hasForgetToCommSemiRingCat.{max u1 u2})) (CategoryTheory.Functor.mapCone.{u1, max u1 u2, max u1 u2, u1, succ (max u1 u2), succ (max u1 u2)} J _inst_1 CommRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2} CommSemiRingCat.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{succ (max u1 u2), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} CommRingCat.{max u1 u2} CommSemiRingCat.{max u1 u2} CommRingCat.largeCategory.{max u1 u2} CommRingCat.concreteCategory.{max u1 u2} CommSemiRingCat.largeCategory.{max u1 u2} CommSemiRingCat.concreteCategory.{max u1 u2} CommRingCat.hasForgetToCommSemiRingCat.{max u1 u2}) (CommRingCat.limitCone.{u1, u2} J _inst_1 F))
+but is expected to have type
+  forall {J : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u2 u1, u1, max (succ u2) (succ u1)} J _inst_1 CommRingCatMax.{u1, u2} instCommRingCatLargeCategory.{max u2 u1}), CategoryTheory.Limits.IsLimit.{u1, max u2 u1, u1, succ (max u2 u1)} J _inst_1 CommSemiRingCat.{max u2 u1} instCommSemiRingCatLargeCategory.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u2 u1, max u2 u1, u1, succ (max u2 u1), succ (max u2 u1)} J _inst_1 CommRingCat.{max u2 u1} instCommRingCatLargeCategory.{max u2 u1} CommSemiRingCat.{max u2 u1} instCommSemiRingCatLargeCategory.{max u2 u1} F (CategoryTheory.forget₂.{succ (max u2 u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} CommRingCat.{max u2 u1} CommSemiRingCat.{max u2 u1} instCommRingCatLargeCategory.{max u2 u1} CommRingCat.instConcreteCategoryCommRingCatInstCommRingCatLargeCategory.{max u2 u1} instCommSemiRingCatLargeCategory.{max u2 u1} CommSemiRing.instConcreteCategoryCommSemiRingCatInstCommSemiRingCatLargeCategory.{max u2 u1} CommRingCat.hasForgetToCommSemiRingCat.{max u2 u1})) (CategoryTheory.Functor.mapCone.{u1, max u2 u1, max u2 u1, u1, succ (max u2 u1), succ (max u2 u1)} J _inst_1 CommRingCat.{max u2 u1} instCommRingCatLargeCategory.{max u2 u1} CommSemiRingCat.{max u2 u1} instCommSemiRingCatLargeCategory.{max u2 u1} (CategoryTheory.forget₂.{succ (max u2 u1), succ (max u2 u1), max u2 u1, max u2 u1, max u2 u1} CommRingCat.{max u2 u1} CommSemiRingCat.{max u2 u1} instCommRingCatLargeCategory.{max u2 u1} CommRingCat.instConcreteCategoryCommRingCatInstCommRingCatLargeCategory.{max u2 u1} instCommSemiRingCatLargeCategory.{max u2 u1} CommSemiRing.instConcreteCategoryCommSemiRingCatInstCommSemiRingCatLargeCategory.{max u2 u1} CommRingCat.hasForgetToCommSemiRingCat.{max u2 u1}) F (CommRingCat.limitCone.{u1, u2} J _inst_1 F))
+Case conversion may be inaccurate. Consider using '#align CommRing.forget₂_CommSemiRing_preserves_limits_aux CommRingCat.forget₂CommSemiRingPreservesLimitsAuxₓ'. -/
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂CommSemiRingPreservesLimitsAux (F : J ⥤ CommRingCat.{max v u}) :
@@ -499,6 +641,7 @@ def forget₂CommSemiRingPreservesLimitsAux (F : J ⥤ CommRingCat.{max v u}) :
   apply CommSemiRingCat.limitConeIsLimit (F ⋙ forget₂ CommRingCat CommSemiRingCat.{max v u})
 #align CommRing.forget₂_CommSemiRing_preserves_limits_aux CommRingCat.forget₂CommSemiRingPreservesLimitsAux
 
+#print CommRingCat.forget₂CommSemiRingPreservesLimitsOfSize /-
 /-- The forgetful functor from commutative rings to commutative semirings preserves all limits.
 (That is, the underlying commutative semirings could have been computed instead as limits
 in the category of commutative semirings.)
@@ -511,12 +654,16 @@ instance forget₂CommSemiRingPreservesLimitsOfSize :
         preserves_limit_of_preserves_limit_cone (limit_cone_is_limit F)
           (forget₂_CommSemiRing_preserves_limits_aux F) }
 #align CommRing.forget₂_CommSemiRing_preserves_limits_of_size CommRingCat.forget₂CommSemiRingPreservesLimitsOfSize
+-/
 
+#print CommRingCat.forget₂CommSemiRingPreservesLimits /-
 instance forget₂CommSemiRingPreservesLimits :
     PreservesLimits (forget₂ CommRingCat CommSemiRingCat.{u}) :=
   CommRingCat.forget₂CommSemiRingPreservesLimitsOfSize.{u, u}
 #align CommRing.forget₂_CommSemiRing_preserves_limits CommRingCat.forget₂CommSemiRingPreservesLimits
+-/
 
+#print CommRingCat.forgetPreservesLimitsOfSize /-
 /-- The forgetful functor from commutative rings to types preserves all limits.
 (That is, the underlying types could have been computed instead as limits in the category of types.)
 -/
@@ -526,10 +673,13 @@ instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget Comm
       PreservesLimit := fun F =>
         limits.comp_preserves_limit (forget₂ CommRingCat RingCat) (forget RingCat) }
 #align CommRing.forget_preserves_limits_of_size CommRingCat.forgetPreservesLimitsOfSize
+-/
 
+#print CommRingCat.forgetPreservesLimits /-
 instance forgetPreservesLimits : PreservesLimits (forget CommRingCat.{u}) :=
   CommRingCat.forgetPreservesLimitsOfSize.{u, u}
 #align CommRing.forget_preserves_limits CommRingCat.forgetPreservesLimits
+-/
 
 end CommRingCat
 
Diff
@@ -38,40 +38,42 @@ universe v u
 
 noncomputable section
 
-namespace SemiRing
+namespace SemiRingCat
 
 variable {J : Type v} [SmallCategory J]
 
-instance semiringObj (F : J ⥤ SemiRing.{max v u}) (j) : Semiring ((F ⋙ forget SemiRing).obj j) :=
+instance semiringObj (F : J ⥤ SemiRingCat.{max v u}) (j) :
+    Semiring ((F ⋙ forget SemiRingCat).obj j) :=
   by
   change Semiring (F.obj j)
   infer_instance
-#align SemiRing.semiring_obj SemiRing.semiringObj
+#align SemiRing.semiring_obj SemiRingCat.semiringObj
 
 /-- The flat sections of a functor into `SemiRing` form a subsemiring of all sections.
 -/
-def sectionsSubsemiring (F : J ⥤ SemiRing.{max v u}) : Subsemiring (∀ j, F.obj j) :=
+def sectionsSubsemiring (F : J ⥤ SemiRingCat.{max v u}) : Subsemiring (∀ j, F.obj j) :=
   {
     AddMonCat.sectionsAddSubmonoid
-      (F ⋙ forget₂ SemiRing AddCommMonCat.{max v u} ⋙ forget₂ AddCommMonCat AddMonCat.{max v u}),
-    MonCat.sectionsSubmonoid (F ⋙ forget₂ SemiRing MonCat.{max v u}) with
-    carrier := (F ⋙ forget SemiRing).sections }
-#align SemiRing.sections_subsemiring SemiRing.sectionsSubsemiring
+      (F ⋙ forget₂ SemiRingCat AddCommMonCat.{max v u} ⋙ forget₂ AddCommMonCat AddMonCat.{max v u}),
+    MonCat.sectionsSubmonoid (F ⋙ forget₂ SemiRingCat MonCat.{max v u}) with
+    carrier := (F ⋙ forget SemiRingCat).sections }
+#align SemiRing.sections_subsemiring SemiRingCat.sectionsSubsemiring
 
-instance limitSemiring (F : J ⥤ SemiRing.{max v u}) :
-    Semiring (Types.limitCone (F ⋙ forget SemiRing.{max v u})).pt :=
+instance limitSemiring (F : J ⥤ SemiRingCat.{max v u}) :
+    Semiring (Types.limitCone (F ⋙ forget SemiRingCat.{max v u})).pt :=
   (sectionsSubsemiring F).toSemiring
-#align SemiRing.limit_semiring SemiRing.limitSemiring
+#align SemiRing.limit_semiring SemiRingCat.limitSemiring
 
 /-- `limit.π (F ⋙ forget SemiRing) j` as a `ring_hom`. -/
-def limitπRingHom (F : J ⥤ SemiRing.{max v u}) (j) :
-    (Types.limitCone (F ⋙ forget SemiRing)).pt →+* (F ⋙ forget SemiRing).obj j :=
+def limitπRingHom (F : J ⥤ SemiRingCat.{max v u}) (j) :
+    (Types.limitCone (F ⋙ forget SemiRingCat)).pt →+* (F ⋙ forget SemiRingCat).obj j :=
   {
     AddMonCat.limitπAddMonoidHom
-      (F ⋙ forget₂ SemiRing AddCommMonCat.{max v u} ⋙ forget₂ AddCommMonCat AddMonCat.{max v u}) j,
-    MonCat.limitπMonoidHom (F ⋙ forget₂ SemiRing MonCat.{max v u}) j with
-    toFun := (Types.limitCone (F ⋙ forget SemiRing)).π.app j }
-#align SemiRing.limit_π_ring_hom SemiRing.limitπRingHom
+      (F ⋙ forget₂ SemiRingCat AddCommMonCat.{max v u} ⋙ forget₂ AddCommMonCat AddMonCat.{max v u})
+      j,
+    MonCat.limitπMonoidHom (F ⋙ forget₂ SemiRingCat MonCat.{max v u}) j with
+    toFun := (Types.limitCone (F ⋙ forget SemiRingCat)).π.app j }
+#align SemiRing.limit_π_ring_hom SemiRingCat.limitπRingHom
 
 namespace HasLimits
 
@@ -81,24 +83,24 @@ namespace HasLimits
 /-- Construction of a limit cone in `SemiRing`.
 (Internal use only; use the limits API.)
 -/
-def limitCone (F : J ⥤ SemiRing.{max v u}) : Cone F
+def limitCone (F : J ⥤ SemiRingCat.{max v u}) : Cone F
     where
-  pt := SemiRing.of (Types.limitCone (F ⋙ forget _)).pt
+  pt := SemiRingCat.of (Types.limitCone (F ⋙ forget _)).pt
   π :=
     { app := limitπRingHom F
       naturality' := fun j j' f =>
         RingHom.coe_inj ((Types.limitCone (F ⋙ forget _)).π.naturality f) }
-#align SemiRing.has_limits.limit_cone SemiRing.HasLimits.limitCone
+#align SemiRing.has_limits.limit_cone SemiRingCat.HasLimits.limitCone
 
 /-- Witness that the limit cone in `SemiRing` is a limit cone.
 (Internal use only; use the limits API.)
 -/
-def limitConeIsLimit (F : J ⥤ SemiRing.{max v u}) : IsLimit (limitCone F) := by
+def limitConeIsLimit (F : J ⥤ SemiRingCat.{max v u}) : IsLimit (limitCone F) := by
   refine'
-      is_limit.of_faithful (forget SemiRing) (types.limit_cone_is_limit _)
+      is_limit.of_faithful (forget SemiRingCat) (types.limit_cone_is_limit _)
         (fun s => ⟨_, _, _, _, _⟩) fun s => rfl <;>
     tidy
-#align SemiRing.has_limits.limit_cone_is_limit SemiRing.HasLimits.limitConeIsLimit
+#align SemiRing.has_limits.limit_cone_is_limit SemiRingCat.HasLimits.limitConeIsLimit
 
 end HasLimits
 
@@ -106,7 +108,7 @@ open HasLimits
 
 /- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 /-- The category of rings has all limits. -/
-irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v} SemiRing.{max v u} :=
+irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v} SemiRingCat.{max v u} :=
   {
     HasLimitsOfShape := fun J 𝒥 =>
       {
@@ -114,163 +116,170 @@ irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v} SemiRing.{max v u} :=
           has_limit.mk
             { Cone := limit_cone F
               IsLimit := limit_cone_is_limit F } } }
-#align SemiRing.has_limits_of_size SemiRing.hasLimitsOfSize
+#align SemiRing.has_limits_of_size SemiRingCat.hasLimitsOfSize
 
-instance hasLimits : HasLimits SemiRing.{u} :=
-  SemiRing.hasLimitsOfSize.{u, u}
-#align SemiRing.has_limits SemiRing.hasLimits
+instance hasLimits : HasLimits SemiRingCat.{u} :=
+  SemiRingCat.hasLimitsOfSize.{u, u}
+#align SemiRing.has_limits SemiRingCat.hasLimits
 
 /-- An auxiliary declaration to speed up typechecking.
 -/
-def forget₂AddCommMonPreservesLimitsAux (F : J ⥤ SemiRing.{max v u}) :
-    IsLimit ((forget₂ SemiRing AddCommMonCat).mapCone (limitCone F)) := by
-  apply AddCommMonCat.limitConeIsLimit (F ⋙ forget₂ SemiRing AddCommMonCat.{max v u})
-#align SemiRing.forget₂_AddCommMon_preserves_limits_aux SemiRing.forget₂AddCommMonPreservesLimitsAux
+def forget₂AddCommMonPreservesLimitsAux (F : J ⥤ SemiRingCat.{max v u}) :
+    IsLimit ((forget₂ SemiRingCat AddCommMonCat).mapCone (limitCone F)) := by
+  apply AddCommMonCat.limitConeIsLimit (F ⋙ forget₂ SemiRingCat AddCommMonCat.{max v u})
+#align SemiRing.forget₂_AddCommMon_preserves_limits_aux SemiRingCat.forget₂AddCommMonPreservesLimitsAux
 
 /-- The forgetful functor from semirings to additive commutative monoids preserves all limits.
 -/
 instance forget₂AddCommMonPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ SemiRing AddCommMonCat.{max v u})
+    PreservesLimitsOfSize.{v, v} (forget₂ SemiRingCat AddCommMonCat.{max v u})
     where PreservesLimitsOfShape J 𝒥 :=
     {
       PreservesLimit := fun F =>
         preserves_limit_of_preserves_limit_cone (limit_cone_is_limit F)
           (forget₂_AddCommMon_preserves_limits_aux F) }
-#align SemiRing.forget₂_AddCommMon_preserves_limits_of_size SemiRing.forget₂AddCommMonPreservesLimitsOfSize
+#align SemiRing.forget₂_AddCommMon_preserves_limits_of_size SemiRingCat.forget₂AddCommMonPreservesLimitsOfSize
 
-instance forget₂AddCommMonPreservesLimits : PreservesLimits (forget₂ SemiRing AddCommMonCat.{u}) :=
-  SemiRing.forget₂AddCommMonPreservesLimitsOfSize.{u, u}
-#align SemiRing.forget₂_AddCommMon_preserves_limits SemiRing.forget₂AddCommMonPreservesLimits
+instance forget₂AddCommMonPreservesLimits :
+    PreservesLimits (forget₂ SemiRingCat AddCommMonCat.{u}) :=
+  SemiRingCat.forget₂AddCommMonPreservesLimitsOfSize.{u, u}
+#align SemiRing.forget₂_AddCommMon_preserves_limits SemiRingCat.forget₂AddCommMonPreservesLimits
 
 /-- An auxiliary declaration to speed up typechecking.
 -/
-def forget₂MonPreservesLimitsAux (F : J ⥤ SemiRing.{max v u}) :
-    IsLimit ((forget₂ SemiRing MonCat).mapCone (limitCone F)) := by
-  apply MonCat.HasLimits.limitConeIsLimit (F ⋙ forget₂ SemiRing MonCat.{max v u})
-#align SemiRing.forget₂_Mon_preserves_limits_aux SemiRing.forget₂MonPreservesLimitsAux
+def forget₂MonPreservesLimitsAux (F : J ⥤ SemiRingCat.{max v u}) :
+    IsLimit ((forget₂ SemiRingCat MonCat).mapCone (limitCone F)) := by
+  apply MonCat.HasLimits.limitConeIsLimit (F ⋙ forget₂ SemiRingCat MonCat.{max v u})
+#align SemiRing.forget₂_Mon_preserves_limits_aux SemiRingCat.forget₂MonPreservesLimitsAux
 
 /-- The forgetful functor from semirings to monoids preserves all limits.
 -/
 instance forget₂MonPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ SemiRing MonCat.{max v u})
+    PreservesLimitsOfSize.{v, v} (forget₂ SemiRingCat MonCat.{max v u})
     where PreservesLimitsOfShape J 𝒥 :=
     {
       PreservesLimit := fun F =>
         preserves_limit_of_preserves_limit_cone (limit_cone_is_limit F)
           (forget₂_Mon_preserves_limits_aux F) }
-#align SemiRing.forget₂_Mon_preserves_limits_of_size SemiRing.forget₂MonPreservesLimitsOfSize
+#align SemiRing.forget₂_Mon_preserves_limits_of_size SemiRingCat.forget₂MonPreservesLimitsOfSize
 
-instance forget₂MonPreservesLimits : PreservesLimits (forget₂ SemiRing MonCat.{u}) :=
-  SemiRing.forget₂MonPreservesLimitsOfSize.{u, u}
-#align SemiRing.forget₂_Mon_preserves_limits SemiRing.forget₂MonPreservesLimits
+instance forget₂MonPreservesLimits : PreservesLimits (forget₂ SemiRingCat MonCat.{u}) :=
+  SemiRingCat.forget₂MonPreservesLimitsOfSize.{u, u}
+#align SemiRing.forget₂_Mon_preserves_limits SemiRingCat.forget₂MonPreservesLimits
 
 /-- The forgetful functor from semirings to types preserves all limits.
 -/
-instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget SemiRing.{max v u})
+instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget SemiRingCat.{max v u})
     where PreservesLimitsOfShape J 𝒥 :=
     {
       PreservesLimit := fun F =>
         preserves_limit_of_preserves_limit_cone (limit_cone_is_limit F)
           (types.limit_cone_is_limit (F ⋙ forget _)) }
-#align SemiRing.forget_preserves_limits_of_size SemiRing.forgetPreservesLimitsOfSize
+#align SemiRing.forget_preserves_limits_of_size SemiRingCat.forgetPreservesLimitsOfSize
 
-instance forgetPreservesLimits : PreservesLimits (forget SemiRing.{u}) :=
-  SemiRing.forgetPreservesLimitsOfSize.{u, u}
-#align SemiRing.forget_preserves_limits SemiRing.forgetPreservesLimits
+instance forgetPreservesLimits : PreservesLimits (forget SemiRingCat.{u}) :=
+  SemiRingCat.forgetPreservesLimitsOfSize.{u, u}
+#align SemiRing.forget_preserves_limits SemiRingCat.forgetPreservesLimits
 
-end SemiRing
+end SemiRingCat
 
-namespace CommSemiRing
+namespace CommSemiRingCat
 
 variable {J : Type v} [SmallCategory J]
 
-instance commSemiringObj (F : J ⥤ CommSemiRing.{max v u}) (j) :
-    CommSemiring ((F ⋙ forget CommSemiRing).obj j) :=
+instance commSemiringObj (F : J ⥤ CommSemiRingCat.{max v u}) (j) :
+    CommSemiring ((F ⋙ forget CommSemiRingCat).obj j) :=
   by
   change CommSemiring (F.obj j)
   infer_instance
-#align CommSemiRing.comm_semiring_obj CommSemiRing.commSemiringObj
+#align CommSemiRing.comm_semiring_obj CommSemiRingCat.commSemiringObj
 
-instance limitCommSemiring (F : J ⥤ CommSemiRing.{max v u}) :
-    CommSemiring (Types.limitCone (F ⋙ forget CommSemiRing.{max v u})).pt :=
+instance limitCommSemiring (F : J ⥤ CommSemiRingCat.{max v u}) :
+    CommSemiring (Types.limitCone (F ⋙ forget CommSemiRingCat.{max v u})).pt :=
   @Subsemiring.toCommSemiring (∀ j, F.obj j) _
-    (SemiRing.sectionsSubsemiring (F ⋙ forget₂ CommSemiRing SemiRing.{max v u}))
-#align CommSemiRing.limit_comm_semiring CommSemiRing.limitCommSemiring
+    (SemiRingCat.sectionsSubsemiring (F ⋙ forget₂ CommSemiRingCat SemiRingCat.{max v u}))
+#align CommSemiRing.limit_comm_semiring CommSemiRingCat.limitCommSemiring
 
 /-- We show that the forgetful functor `CommSemiRing ⥤ SemiRing` creates limits.
 
 All we need to do is notice that the limit point has a `comm_semiring` instance available,
 and then reuse the existing limit.
 -/
-instance (F : J ⥤ CommSemiRing.{max v u}) :
-    CreatesLimit F (forget₂ CommSemiRing SemiRing.{max v u}) :=
+instance (F : J ⥤ CommSemiRingCat.{max v u}) :
+    CreatesLimit F (forget₂ CommSemiRingCat SemiRingCat.{max v u}) :=
   createsLimitOfReflectsIso fun c' t =>
     { liftedCone :=
         { pt := CommSemiRing.of (Types.limitCone (F ⋙ forget _)).pt
           π :=
-            { app := by apply SemiRing.limitπRingHom (F ⋙ forget₂ CommSemiRing SemiRing.{max v u})
+            { app := by
+                apply SemiRingCat.limitπRingHom (F ⋙ forget₂ CommSemiRingCat SemiRingCat.{max v u})
               naturality' :=
-                (SemiRing.HasLimits.limitCone
-                      (F ⋙ forget₂ CommSemiRing SemiRing.{max v u})).π.naturality } }
-      validLift := by apply is_limit.unique_up_to_iso (SemiRing.HasLimits.limitConeIsLimit _) t
+                (SemiRingCat.HasLimits.limitCone
+                      (F ⋙ forget₂ CommSemiRingCat SemiRingCat.{max v u})).π.naturality } }
+      validLift := by apply is_limit.unique_up_to_iso (SemiRingCat.HasLimits.limitConeIsLimit _) t
       makesLimit :=
-        IsLimit.ofFaithful (forget₂ CommSemiRing SemiRing.{max v u})
-          (by apply SemiRing.HasLimits.limitConeIsLimit _)
-          (fun s => (SemiRing.HasLimits.limitConeIsLimit _).lift ((forget₂ _ SemiRing).mapCone s))
+        IsLimit.ofFaithful (forget₂ CommSemiRingCat SemiRingCat.{max v u})
+          (by apply SemiRingCat.HasLimits.limitConeIsLimit _)
+          (fun s =>
+            (SemiRingCat.HasLimits.limitConeIsLimit _).lift ((forget₂ _ SemiRingCat).mapCone s))
           fun s => rfl }
 
 /-- A choice of limit cone for a functor into `CommSemiRing`.
 (Generally, you'll just want to use `limit F`.)
 -/
-def limitCone (F : J ⥤ CommSemiRing.{max v u}) : Cone F :=
-  liftLimit (limit.isLimit (F ⋙ forget₂ CommSemiRing SemiRing.{max v u}))
-#align CommSemiRing.limit_cone CommSemiRing.limitCone
+def limitCone (F : J ⥤ CommSemiRingCat.{max v u}) : Cone F :=
+  liftLimit (limit.isLimit (F ⋙ forget₂ CommSemiRingCat SemiRingCat.{max v u}))
+#align CommSemiRing.limit_cone CommSemiRingCat.limitCone
 
 /-- The chosen cone is a limit cone.
 (Generally, you'll just want to use `limit.cone F`.)
 -/
-def limitConeIsLimit (F : J ⥤ CommSemiRing.{max v u}) : IsLimit (limitCone F) :=
+def limitConeIsLimit (F : J ⥤ CommSemiRingCat.{max v u}) : IsLimit (limitCone F) :=
   liftedLimitIsLimit _
-#align CommSemiRing.limit_cone_is_limit CommSemiRing.limitConeIsLimit
+#align CommSemiRing.limit_cone_is_limit CommSemiRingCat.limitConeIsLimit
 
 /- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 /-- The category of rings has all limits. -/
-irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommSemiRing.{max v u} :=
+irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommSemiRingCat.{max v u} :=
   {
     HasLimitsOfShape := fun J 𝒥 =>
-      { HasLimit := fun F => has_limit_of_created F (forget₂ CommSemiRing SemiRing.{max v u}) } }
-#align CommSemiRing.has_limits_of_size CommSemiRing.hasLimitsOfSize
+      {
+        HasLimit := fun F =>
+          has_limit_of_created F (forget₂ CommSemiRingCat SemiRingCat.{max v u}) } }
+#align CommSemiRing.has_limits_of_size CommSemiRingCat.hasLimitsOfSize
 
-instance hasLimits : HasLimits CommSemiRing.{u} :=
-  CommSemiRing.hasLimitsOfSize.{u, u}
-#align CommSemiRing.has_limits CommSemiRing.hasLimits
+instance hasLimits : HasLimits CommSemiRingCat.{u} :=
+  CommSemiRingCat.hasLimitsOfSize.{u, u}
+#align CommSemiRing.has_limits CommSemiRingCat.hasLimits
 
 /-- The forgetful functor from rings to semirings preserves all limits.
 -/
 instance forget₂SemiRingPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ CommSemiRing SemiRing.{max v u})
+    PreservesLimitsOfSize.{v, v} (forget₂ CommSemiRingCat SemiRingCat.{max v u})
     where PreservesLimitsOfShape J 𝒥 := { PreservesLimit := fun F => by infer_instance }
-#align CommSemiRing.forget₂_SemiRing_preserves_limits_of_size CommSemiRing.forget₂SemiRingPreservesLimitsOfSize
+#align CommSemiRing.forget₂_SemiRing_preserves_limits_of_size CommSemiRingCat.forget₂SemiRingPreservesLimitsOfSize
 
-instance forget₂SemiRingPreservesLimits : PreservesLimits (forget₂ CommSemiRing SemiRing.{u}) :=
-  CommSemiRing.forget₂SemiRingPreservesLimitsOfSize.{u, u}
-#align CommSemiRing.forget₂_SemiRing_preserves_limits CommSemiRing.forget₂SemiRingPreservesLimits
+instance forget₂SemiRingPreservesLimits :
+    PreservesLimits (forget₂ CommSemiRingCat SemiRingCat.{u}) :=
+  CommSemiRingCat.forget₂SemiRingPreservesLimitsOfSize.{u, u}
+#align CommSemiRing.forget₂_SemiRing_preserves_limits CommSemiRingCat.forget₂SemiRingPreservesLimits
 
 /-- The forgetful functor from rings to types preserves all limits. (That is, the underlying
 types could have been computed instead as limits in the category of types.)
 -/
-instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget CommSemiRing.{max v u})
+instance forgetPreservesLimitsOfSize :
+    PreservesLimitsOfSize.{v, v} (forget CommSemiRingCat.{max v u})
     where PreservesLimitsOfShape J 𝒥 :=
     {
       PreservesLimit := fun F =>
-        limits.comp_preserves_limit (forget₂ CommSemiRing SemiRing) (forget SemiRing) }
-#align CommSemiRing.forget_preserves_limits_of_size CommSemiRing.forgetPreservesLimitsOfSize
+        limits.comp_preserves_limit (forget₂ CommSemiRingCat SemiRingCat) (forget SemiRingCat) }
+#align CommSemiRing.forget_preserves_limits_of_size CommSemiRingCat.forgetPreservesLimitsOfSize
 
-instance forgetPreservesLimits : PreservesLimits (forget CommSemiRing.{u}) :=
-  CommSemiRing.forgetPreservesLimitsOfSize.{u, u}
-#align CommSemiRing.forget_preserves_limits CommSemiRing.forgetPreservesLimits
+instance forgetPreservesLimits : PreservesLimits (forget CommSemiRingCat.{u}) :=
+  CommSemiRingCat.forgetPreservesLimitsOfSize.{u, u}
+#align CommSemiRing.forget_preserves_limits CommSemiRingCat.forgetPreservesLimits
 
-end CommSemiRing
+end CommSemiRingCat
 
 namespace RingCat
 
@@ -289,7 +298,7 @@ def sectionsSubring (F : J ⥤ RingCat.{max v u}) : Subring (∀ j, F.obj j) :=
     AddGroupCat.sectionsAddSubgroup
       (F ⋙
         forget₂ RingCat AddCommGroupCat.{max v u} ⋙ forget₂ AddCommGroupCat AddGroupCat.{max v u}),
-    SemiRing.sectionsSubsemiring (F ⋙ forget₂ RingCat SemiRing.{max v u}) with
+    SemiRingCat.sectionsSubsemiring (F ⋙ forget₂ RingCat SemiRingCat.{max v u}) with
     carrier := (F ⋙ forget RingCat).sections }
 #align Ring.sections_subring RingCat.sectionsSubring
 
@@ -303,25 +312,25 @@ instance limitRing (F : J ⥤ RingCat.{max v u}) :
 All we need to do is notice that the limit point has a `ring` instance available,
 and then reuse the existing limit.
 -/
-instance (F : J ⥤ RingCat.{max v u}) : CreatesLimit F (forget₂ RingCat SemiRing.{max v u}) :=
+instance (F : J ⥤ RingCat.{max v u}) : CreatesLimit F (forget₂ RingCat SemiRingCat.{max v u}) :=
   createsLimitOfReflectsIso fun c' t =>
     { liftedCone :=
         { pt := RingCat.of (Types.limitCone (F ⋙ forget _)).pt
           π :=
-            { app := by apply SemiRing.limitπRingHom (F ⋙ forget₂ RingCat SemiRing.{max v u})
+            { app := by apply SemiRingCat.limitπRingHom (F ⋙ forget₂ RingCat SemiRingCat.{max v u})
               naturality' :=
-                (SemiRing.HasLimits.limitCone
-                      (F ⋙ forget₂ RingCat SemiRing.{max v u})).π.naturality } }
-      validLift := by apply is_limit.unique_up_to_iso (SemiRing.HasLimits.limitConeIsLimit _) t
+                (SemiRingCat.HasLimits.limitCone
+                      (F ⋙ forget₂ RingCat SemiRingCat.{max v u})).π.naturality } }
+      validLift := by apply is_limit.unique_up_to_iso (SemiRingCat.HasLimits.limitConeIsLimit _) t
       makesLimit :=
-        IsLimit.ofFaithful (forget₂ RingCat SemiRing.{max v u})
-          (by apply SemiRing.HasLimits.limitConeIsLimit _) (fun s => _) fun s => rfl }
+        IsLimit.ofFaithful (forget₂ RingCat SemiRingCat.{max v u})
+          (by apply SemiRingCat.HasLimits.limitConeIsLimit _) (fun s => _) fun s => rfl }
 
 /-- A choice of limit cone for a functor into `Ring`.
 (Generally, you'll just want to use `limit F`.)
 -/
 def limitCone (F : J ⥤ RingCat.{max v u}) : Cone F :=
-  liftLimit (limit.isLimit (F ⋙ forget₂ RingCat SemiRing.{max v u}))
+  liftLimit (limit.isLimit (F ⋙ forget₂ RingCat SemiRingCat.{max v u}))
 #align Ring.limit_cone RingCat.limitCone
 
 /-- The chosen cone is a limit cone.
@@ -336,7 +345,7 @@ def limitConeIsLimit (F : J ⥤ RingCat.{max v u}) : IsLimit (limitCone F) :=
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} RingCat.{max v u} :=
   {
     HasLimitsOfShape := fun J 𝒥 =>
-      { HasLimit := fun F => has_limit_of_created F (forget₂ RingCat SemiRing.{max v u}) } }
+      { HasLimit := fun F => has_limit_of_created F (forget₂ RingCat SemiRingCat.{max v u}) } }
 #align Ring.has_limits_of_size RingCat.hasLimitsOfSize
 
 instance hasLimits : HasLimits RingCat.{u} :=
@@ -346,11 +355,11 @@ instance hasLimits : HasLimits RingCat.{u} :=
 /-- The forgetful functor from rings to semirings preserves all limits.
 -/
 instance forget₂SemiRingPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ RingCat SemiRing.{max v u})
+    PreservesLimitsOfSize.{v, v} (forget₂ RingCat SemiRingCat.{max v u})
     where PreservesLimitsOfShape J 𝒥 := { PreservesLimit := fun F => by infer_instance }
 #align Ring.forget₂_SemiRing_preserves_limits_of_size RingCat.forget₂SemiRingPreservesLimitsOfSize
 
-instance forget₂SemiRingPreservesLimits : PreservesLimits (forget₂ RingCat SemiRing.{u}) :=
+instance forget₂SemiRingPreservesLimits : PreservesLimits (forget₂ RingCat SemiRingCat.{u}) :=
   RingCat.forget₂SemiRingPreservesLimitsOfSize.{u, u}
 #align Ring.forget₂_SemiRing_preserves_limits RingCat.forget₂SemiRingPreservesLimits
 
@@ -384,7 +393,7 @@ instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget Ring
     where PreservesLimitsOfShape J 𝒥 :=
     {
       PreservesLimit := fun F =>
-        limits.comp_preserves_limit (forget₂ RingCat SemiRing) (forget SemiRing.{max v u}) }
+        limits.comp_preserves_limit (forget₂ RingCat SemiRingCat) (forget SemiRingCat.{max v u}) }
 #align Ring.forget_preserves_limits_of_size RingCat.forgetPreservesLimitsOfSize
 
 instance forgetPreservesLimits : PreservesLimits (forget RingCat.{u}) :=
@@ -430,13 +439,14 @@ instance (F : J ⥤ CommRingCat.{max v u}) : CreatesLimit F (forget₂ CommRingC
           π :=
             { app := by
                 apply
-                  SemiRing.limitπRingHom
-                    (F ⋙ forget₂ CommRingCat RingCat.{max v u} ⋙ forget₂ RingCat SemiRing.{max v u})
+                  SemiRingCat.limitπRingHom
+                    (F ⋙
+                      forget₂ CommRingCat RingCat.{max v u} ⋙ forget₂ RingCat SemiRingCat.{max v u})
               naturality' :=
-                (SemiRing.HasLimits.limitCone
+                (SemiRingCat.HasLimits.limitCone
                       (F ⋙
                         forget₂ _ RingCat.{max v u} ⋙
-                          forget₂ _ SemiRing.{max v u})).π.naturality } }
+                          forget₂ _ SemiRingCat.{max v u})).π.naturality } }
       validLift := by apply is_limit.unique_up_to_iso (RingCat.limitConeIsLimit _) t
       makesLimit :=
         IsLimit.ofFaithful (forget₂ _ RingCat.{max v u})
@@ -485,8 +495,8 @@ instance forget₂RingPreservesLimits : PreservesLimits (forget₂ CommRingCat R
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂CommSemiRingPreservesLimitsAux (F : J ⥤ CommRingCat.{max v u}) :
-    IsLimit ((forget₂ CommRingCat CommSemiRing).mapCone (limitCone F)) := by
-  apply CommSemiRing.limitConeIsLimit (F ⋙ forget₂ CommRingCat CommSemiRing.{max v u})
+    IsLimit ((forget₂ CommRingCat CommSemiRingCat).mapCone (limitCone F)) := by
+  apply CommSemiRingCat.limitConeIsLimit (F ⋙ forget₂ CommRingCat CommSemiRingCat.{max v u})
 #align CommRing.forget₂_CommSemiRing_preserves_limits_aux CommRingCat.forget₂CommSemiRingPreservesLimitsAux
 
 /-- The forgetful functor from commutative rings to commutative semirings preserves all limits.
@@ -494,7 +504,7 @@ def forget₂CommSemiRingPreservesLimitsAux (F : J ⥤ CommRingCat.{max v u}) :
 in the category of commutative semirings.)
 -/
 instance forget₂CommSemiRingPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ CommRingCat CommSemiRing.{max v u})
+    PreservesLimitsOfSize.{v, v} (forget₂ CommRingCat CommSemiRingCat.{max v u})
     where PreservesLimitsOfShape J 𝒥 :=
     {
       PreservesLimit := fun F =>
@@ -503,7 +513,7 @@ instance forget₂CommSemiRingPreservesLimitsOfSize :
 #align CommRing.forget₂_CommSemiRing_preserves_limits_of_size CommRingCat.forget₂CommSemiRingPreservesLimitsOfSize
 
 instance forget₂CommSemiRingPreservesLimits :
-    PreservesLimits (forget₂ CommRingCat CommSemiRing.{u}) :=
+    PreservesLimits (forget₂ CommRingCat CommSemiRingCat.{u}) :=
   CommRingCat.forget₂CommSemiRingPreservesLimitsOfSize.{u, u}
 #align CommRing.forget₂_CommSemiRing_preserves_limits CommRingCat.forget₂CommSemiRingPreservesLimits
 
Diff
@@ -104,7 +104,7 @@ end HasLimits
 
 open HasLimits
 
-/- ./././Mathport/Syntax/Translate/Command.lean:317:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v} SemiRing.{max v u} :=
   {
@@ -233,7 +233,7 @@ def limitConeIsLimit (F : J ⥤ CommSemiRing.{max v u}) : IsLimit (limitCone F)
   liftedLimitIsLimit _
 #align CommSemiRing.limit_cone_is_limit CommSemiRing.limitConeIsLimit
 
-/- ./././Mathport/Syntax/Translate/Command.lean:317:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommSemiRing.{max v u} :=
   {
@@ -331,7 +331,7 @@ def limitConeIsLimit (F : J ⥤ RingCat.{max v u}) : IsLimit (limitCone F) :=
   liftedLimitIsLimit _
 #align Ring.limit_cone_is_limit RingCat.limitConeIsLimit
 
-/- ./././Mathport/Syntax/Translate/Command.lean:317:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 /-- The category of rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} RingCat.{max v u} :=
   {
@@ -458,7 +458,7 @@ def limitConeIsLimit (F : J ⥤ CommRingCat.{max v u}) : IsLimit (limitCone F) :
   liftedLimitIsLimit _
 #align CommRing.limit_cone_is_limit CommRingCat.limitConeIsLimit
 
-/- ./././Mathport/Syntax/Translate/Command.lean:317:38: unsupported irreducible non-definition -/
+/- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 /-- The category of commutative rings has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} CommRingCat.{max v u} :=
   {
Diff
@@ -52,9 +52,9 @@ instance semiringObj (F : J ⥤ SemiRing.{max v u}) (j) : Semiring ((F ⋙ forge
 -/
 def sectionsSubsemiring (F : J ⥤ SemiRing.{max v u}) : Subsemiring (∀ j, F.obj j) :=
   {
-    AddMon.sectionsAddSubmonoid
-      (F ⋙ forget₂ SemiRing AddCommMon.{max v u} ⋙ forget₂ AddCommMon AddMon.{max v u}),
-    Mon.sectionsSubmonoid (F ⋙ forget₂ SemiRing Mon.{max v u}) with
+    AddMonCat.sectionsAddSubmonoid
+      (F ⋙ forget₂ SemiRing AddCommMonCat.{max v u} ⋙ forget₂ AddCommMonCat AddMonCat.{max v u}),
+    MonCat.sectionsSubmonoid (F ⋙ forget₂ SemiRing MonCat.{max v u}) with
     carrier := (F ⋙ forget SemiRing).sections }
 #align SemiRing.sections_subsemiring SemiRing.sectionsSubsemiring
 
@@ -67,9 +67,9 @@ instance limitSemiring (F : J ⥤ SemiRing.{max v u}) :
 def limitπRingHom (F : J ⥤ SemiRing.{max v u}) (j) :
     (Types.limitCone (F ⋙ forget SemiRing)).pt →+* (F ⋙ forget SemiRing).obj j :=
   {
-    AddMon.limitπAddMonoidHom
-      (F ⋙ forget₂ SemiRing AddCommMon.{max v u} ⋙ forget₂ AddCommMon AddMon.{max v u}) j,
-    Mon.limitπMonoidHom (F ⋙ forget₂ SemiRing Mon.{max v u}) j with
+    AddMonCat.limitπAddMonoidHom
+      (F ⋙ forget₂ SemiRing AddCommMonCat.{max v u} ⋙ forget₂ AddCommMonCat AddMonCat.{max v u}) j,
+    MonCat.limitπMonoidHom (F ⋙ forget₂ SemiRing MonCat.{max v u}) j with
     toFun := (Types.limitCone (F ⋙ forget SemiRing)).π.app j }
 #align SemiRing.limit_π_ring_hom SemiRing.limitπRingHom
 
@@ -123,14 +123,14 @@ instance hasLimits : HasLimits SemiRing.{u} :=
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂AddCommMonPreservesLimitsAux (F : J ⥤ SemiRing.{max v u}) :
-    IsLimit ((forget₂ SemiRing AddCommMon).mapCone (limitCone F)) := by
-  apply AddCommMon.limitConeIsLimit (F ⋙ forget₂ SemiRing AddCommMon.{max v u})
+    IsLimit ((forget₂ SemiRing AddCommMonCat).mapCone (limitCone F)) := by
+  apply AddCommMonCat.limitConeIsLimit (F ⋙ forget₂ SemiRing AddCommMonCat.{max v u})
 #align SemiRing.forget₂_AddCommMon_preserves_limits_aux SemiRing.forget₂AddCommMonPreservesLimitsAux
 
 /-- The forgetful functor from semirings to additive commutative monoids preserves all limits.
 -/
 instance forget₂AddCommMonPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ SemiRing AddCommMon.{max v u})
+    PreservesLimitsOfSize.{v, v} (forget₂ SemiRing AddCommMonCat.{max v u})
     where PreservesLimitsOfShape J 𝒥 :=
     {
       PreservesLimit := fun F =>
@@ -138,21 +138,21 @@ instance forget₂AddCommMonPreservesLimitsOfSize :
           (forget₂_AddCommMon_preserves_limits_aux F) }
 #align SemiRing.forget₂_AddCommMon_preserves_limits_of_size SemiRing.forget₂AddCommMonPreservesLimitsOfSize
 
-instance forget₂AddCommMonPreservesLimits : PreservesLimits (forget₂ SemiRing AddCommMon.{u}) :=
+instance forget₂AddCommMonPreservesLimits : PreservesLimits (forget₂ SemiRing AddCommMonCat.{u}) :=
   SemiRing.forget₂AddCommMonPreservesLimitsOfSize.{u, u}
 #align SemiRing.forget₂_AddCommMon_preserves_limits SemiRing.forget₂AddCommMonPreservesLimits
 
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂MonPreservesLimitsAux (F : J ⥤ SemiRing.{max v u}) :
-    IsLimit ((forget₂ SemiRing Mon).mapCone (limitCone F)) := by
-  apply Mon.HasLimits.limitConeIsLimit (F ⋙ forget₂ SemiRing Mon.{max v u})
+    IsLimit ((forget₂ SemiRing MonCat).mapCone (limitCone F)) := by
+  apply MonCat.HasLimits.limitConeIsLimit (F ⋙ forget₂ SemiRing MonCat.{max v u})
 #align SemiRing.forget₂_Mon_preserves_limits_aux SemiRing.forget₂MonPreservesLimitsAux
 
 /-- The forgetful functor from semirings to monoids preserves all limits.
 -/
 instance forget₂MonPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ SemiRing Mon.{max v u})
+    PreservesLimitsOfSize.{v, v} (forget₂ SemiRing MonCat.{max v u})
     where PreservesLimitsOfShape J 𝒥 :=
     {
       PreservesLimit := fun F =>
@@ -160,7 +160,7 @@ instance forget₂MonPreservesLimitsOfSize :
           (forget₂_Mon_preserves_limits_aux F) }
 #align SemiRing.forget₂_Mon_preserves_limits_of_size SemiRing.forget₂MonPreservesLimitsOfSize
 
-instance forget₂MonPreservesLimits : PreservesLimits (forget₂ SemiRing Mon.{u}) :=
+instance forget₂MonPreservesLimits : PreservesLimits (forget₂ SemiRing MonCat.{u}) :=
   SemiRing.forget₂MonPreservesLimitsOfSize.{u, u}
 #align SemiRing.forget₂_Mon_preserves_limits SemiRing.forget₂MonPreservesLimits
 
Diff
@@ -59,13 +59,13 @@ def sectionsSubsemiring (F : J ⥤ SemiRing.{max v u}) : Subsemiring (∀ j, F.o
 #align SemiRing.sections_subsemiring SemiRing.sectionsSubsemiring
 
 instance limitSemiring (F : J ⥤ SemiRing.{max v u}) :
-    Semiring (Types.limitCone (F ⋙ forget SemiRing.{max v u})).x :=
+    Semiring (Types.limitCone (F ⋙ forget SemiRing.{max v u})).pt :=
   (sectionsSubsemiring F).toSemiring
 #align SemiRing.limit_semiring SemiRing.limitSemiring
 
 /-- `limit.π (F ⋙ forget SemiRing) j` as a `ring_hom`. -/
 def limitπRingHom (F : J ⥤ SemiRing.{max v u}) (j) :
-    (Types.limitCone (F ⋙ forget SemiRing)).x →+* (F ⋙ forget SemiRing).obj j :=
+    (Types.limitCone (F ⋙ forget SemiRing)).pt →+* (F ⋙ forget SemiRing).obj j :=
   {
     AddMon.limitπAddMonoidHom
       (F ⋙ forget₂ SemiRing AddCommMon.{max v u} ⋙ forget₂ AddCommMon AddMon.{max v u}) j,
@@ -83,7 +83,7 @@ namespace HasLimits
 -/
 def limitCone (F : J ⥤ SemiRing.{max v u}) : Cone F
     where
-  x := SemiRing.of (Types.limitCone (F ⋙ forget _)).x
+  pt := SemiRing.of (Types.limitCone (F ⋙ forget _)).pt
   π :=
     { app := limitπRingHom F
       naturality' := fun j j' f =>
@@ -192,7 +192,7 @@ instance commSemiringObj (F : J ⥤ CommSemiRing.{max v u}) (j) :
 #align CommSemiRing.comm_semiring_obj CommSemiRing.commSemiringObj
 
 instance limitCommSemiring (F : J ⥤ CommSemiRing.{max v u}) :
-    CommSemiring (Types.limitCone (F ⋙ forget CommSemiRing.{max v u})).x :=
+    CommSemiring (Types.limitCone (F ⋙ forget CommSemiRing.{max v u})).pt :=
   @Subsemiring.toCommSemiring (∀ j, F.obj j) _
     (SemiRing.sectionsSubsemiring (F ⋙ forget₂ CommSemiRing SemiRing.{max v u}))
 #align CommSemiRing.limit_comm_semiring CommSemiRing.limitCommSemiring
@@ -206,7 +206,7 @@ instance (F : J ⥤ CommSemiRing.{max v u}) :
     CreatesLimit F (forget₂ CommSemiRing SemiRing.{max v u}) :=
   createsLimitOfReflectsIso fun c' t =>
     { liftedCone :=
-        { x := CommSemiRing.of (Types.limitCone (F ⋙ forget _)).x
+        { pt := CommSemiRing.of (Types.limitCone (F ⋙ forget _)).pt
           π :=
             { app := by apply SemiRing.limitπRingHom (F ⋙ forget₂ CommSemiRing SemiRing.{max v u})
               naturality' :=
@@ -294,7 +294,7 @@ def sectionsSubring (F : J ⥤ RingCat.{max v u}) : Subring (∀ j, F.obj j) :=
 #align Ring.sections_subring RingCat.sectionsSubring
 
 instance limitRing (F : J ⥤ RingCat.{max v u}) :
-    Ring (Types.limitCone (F ⋙ forget RingCat.{max v u})).x :=
+    Ring (Types.limitCone (F ⋙ forget RingCat.{max v u})).pt :=
   (sectionsSubring F).toRing
 #align Ring.limit_ring RingCat.limitRing
 
@@ -306,7 +306,7 @@ and then reuse the existing limit.
 instance (F : J ⥤ RingCat.{max v u}) : CreatesLimit F (forget₂ RingCat SemiRing.{max v u}) :=
   createsLimitOfReflectsIso fun c' t =>
     { liftedCone :=
-        { x := RingCat.of (Types.limitCone (F ⋙ forget _)).x
+        { pt := RingCat.of (Types.limitCone (F ⋙ forget _)).pt
           π :=
             { app := by apply SemiRing.limitπRingHom (F ⋙ forget₂ RingCat SemiRing.{max v u})
               naturality' :=
@@ -405,7 +405,7 @@ instance commRingObj (F : J ⥤ CommRingCat.{max v u}) (j) :
 #align CommRing.comm_ring_obj CommRingCat.commRingObj
 
 instance limitCommRing (F : J ⥤ CommRingCat.{max v u}) :
-    CommRing (Types.limitCone (F ⋙ forget CommRingCat.{max v u})).x :=
+    CommRing (Types.limitCone (F ⋙ forget CommRingCat.{max v u})).pt :=
   @Subring.toCommRing (∀ j, F.obj j) _
     (RingCat.sectionsSubring (F ⋙ forget₂ CommRingCat RingCat.{max v u}))
 #align CommRing.limit_comm_ring CommRingCat.limitCommRing
@@ -426,7 +426,7 @@ instance (F : J ⥤ CommRingCat.{max v u}) : CreatesLimit F (forget₂ CommRingC
     createsLimitOfReflectsIso
     fun c' t =>
     { liftedCone :=
-        { x := CommRingCat.of (Types.limitCone (F ⋙ forget _)).x
+        { pt := CommRingCat.of (Types.limitCone (F ⋙ forget _)).pt
           π :=
             { app := by
                 apply
Diff
@@ -124,7 +124,7 @@ instance hasLimits : HasLimits SemiRing.{u} :=
 -/
 def forget₂AddCommMonPreservesLimitsAux (F : J ⥤ SemiRing.{max v u}) :
     IsLimit ((forget₂ SemiRing AddCommMon).mapCone (limitCone F)) := by
-  apply AddCommMon.limit_cone_is_limit (F ⋙ forget₂ SemiRing AddCommMon.{max v u})
+  apply AddCommMon.limitConeIsLimit (F ⋙ forget₂ SemiRing AddCommMon.{max v u})
 #align SemiRing.forget₂_AddCommMon_preserves_limits_aux SemiRing.forget₂AddCommMonPreservesLimitsAux
 
 /-- The forgetful functor from semirings to additive commutative monoids preserves all limits.
@@ -358,7 +358,7 @@ instance forget₂SemiRingPreservesLimits : PreservesLimits (forget₂ RingCat S
 -/
 def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ RingCat.{max v u}) :
     IsLimit ((forget₂ RingCat AddCommGroupCat).mapCone (limitCone F)) := by
-  apply AddCommGroupCat.limit_cone_is_limit (F ⋙ forget₂ RingCat AddCommGroupCat.{max v u})
+  apply AddCommGroupCat.limitConeIsLimit (F ⋙ forget₂ RingCat AddCommGroupCat.{max v u})
 #align Ring.forget₂_AddCommGroup_preserves_limits_aux RingCat.forget₂AddCommGroupPreservesLimitsAux
 
 /-- The forgetful functor from rings to additive commutative groups preserves all limits.

Changes in mathlib4

mathlib3
mathlib4
chore: adaptations to lean 4.8.0 (#12549)
Diff
@@ -387,7 +387,7 @@ All we need to do is notice that the limit point has a `Ring` instance available
 and then reuse the existing limit.
 -/
 instance : CreatesLimit F (forget₂ RingCat.{u} SemiRingCat.{u}) :=
-  letI : (forget₂ RingCat SemiRingCat).ReflectsIsomorphisms :=
+  have : (forget₂ RingCat SemiRingCat).ReflectsIsomorphisms :=
     CategoryTheory.reflectsIsomorphisms_forget₂ _ _
   have : Small.{u} (Functor.sections ((F ⋙ forget₂ _ SemiRingCat) ⋙ forget _)) :=
     inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
@@ -545,7 +545,7 @@ instance :
     but it seems this would introduce additional identity morphisms in `limit.π`.
     -/
     -- Porting note: need to add these instances manually
-    letI : (forget₂ CommRingCat.{u} RingCat.{u}).ReflectsIsomorphisms :=
+    have : (forget₂ CommRingCat.{u} RingCat.{u}).ReflectsIsomorphisms :=
       CategoryTheory.reflectsIsomorphisms_forget₂ _ _
     have : Small.{u} (Functor.sections ((F ⋙ forget₂ CommRingCat RingCat) ⋙ forget RingCat)) :=
       inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
chore: superfluous parentheses part 2 (#12131)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -463,7 +463,7 @@ set_option linter.uppercaseLean3 false in
 def forget₂AddCommGroupPreservesLimitsAux :
     IsLimit ((forget₂ RingCat.{u} AddCommGroupCat).mapCone (limitCone.{v, u} F)) := by
   -- Porting note: inline `f` would not compile
-  letI f := (F ⋙ forget₂ RingCat.{u} AddCommGroupCat.{u})
+  letI f := F ⋙ forget₂ RingCat.{u} AddCommGroupCat.{u}
   letI : Small.{u} (Functor.sections (f ⋙ forget _)) :=
     inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
   apply AddCommGroupCat.limitConeIsLimit.{v, u} f
chore(CategoryTheory): move Full, Faithful, EssSurj, IsEquivalence and ReflectsIsomorphisms to the Functor namespace (#11985)

These notions on functors are now Functor.Full, Functor.Faithful, Functor.EssSurj, Functor.IsEquivalence, Functor.ReflectsIsomorphisms. Deprecated aliases are introduced for the previous names.

Diff
@@ -255,10 +255,9 @@ instance :
   -- `CommSemiRingCat ⥤ SemiRingCat` reflects isomorphism. `CommSemiRingCat ⥤ Type` reflecting
   -- isomorphism is added manually since Lean can't see it, but even with this addition Lean can not
   -- see `CommSemiRingCat ⥤ SemiRingCat` reflects isomorphism, so this instance is also added.
-  letI : ReflectsIsomorphisms (forget CommSemiRingCat.{u}) :=
+  letI : (forget CommSemiRingCat.{u}).ReflectsIsomorphisms :=
     CommSemiRingCat.forgetReflectIsos.{u}
-  letI : ReflectsIsomorphisms
-    (forget₂ CommSemiRingCat.{u} SemiRingCat.{u}) :=
+  letI : (forget₂ CommSemiRingCat.{u} SemiRingCat.{u}).ReflectsIsomorphisms :=
     CategoryTheory.reflectsIsomorphisms_forget₂ CommSemiRingCat.{u} SemiRingCat.{u}
   letI : Small.{u} (Functor.sections ((F ⋙ forget₂ _ SemiRingCat) ⋙ forget _)) :=
     inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget CommSemiRingCat))
@@ -388,7 +387,7 @@ All we need to do is notice that the limit point has a `Ring` instance available
 and then reuse the existing limit.
 -/
 instance : CreatesLimit F (forget₂ RingCat.{u} SemiRingCat.{u}) :=
-  have : ReflectsIsomorphisms (forget₂ RingCat SemiRingCat) :=
+  letI : (forget₂ RingCat SemiRingCat).ReflectsIsomorphisms :=
     CategoryTheory.reflectsIsomorphisms_forget₂ _ _
   have : Small.{u} (Functor.sections ((F ⋙ forget₂ _ SemiRingCat) ⋙ forget _)) :=
     inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
@@ -546,7 +545,7 @@ instance :
     but it seems this would introduce additional identity morphisms in `limit.π`.
     -/
     -- Porting note: need to add these instances manually
-    have : ReflectsIsomorphisms (forget₂ CommRingCat.{u} RingCat.{u}) :=
+    letI : (forget₂ CommRingCat.{u} RingCat.{u}).ReflectsIsomorphisms :=
       CategoryTheory.reflectsIsomorphisms_forget₂ _ _
     have : Small.{u} (Functor.sections ((F ⋙ forget₂ CommRingCat RingCat) ⋙ forget RingCat)) :=
       inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
chore: future-proof proofs in Category/Ring/Limits (#11839)

These proofs will become slow after https://github.com/leanprover/lean4/pull/3807, but with these changes there is no regression. 🤷‍♀️

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

Diff
@@ -388,16 +388,16 @@ All we need to do is notice that the limit point has a `Ring` instance available
 and then reuse the existing limit.
 -/
 instance : CreatesLimit F (forget₂ RingCat.{u} SemiRingCat.{u}) :=
-  letI : ReflectsIsomorphisms (forget₂ RingCat SemiRingCat) :=
+  have : ReflectsIsomorphisms (forget₂ RingCat SemiRingCat) :=
     CategoryTheory.reflectsIsomorphisms_forget₂ _ _
-  letI : Small.{u} (Functor.sections ((F ⋙ forget₂ _ SemiRingCat) ⋙ forget _)) :=
+  have : Small.{u} (Functor.sections ((F ⋙ forget₂ _ SemiRingCat) ⋙ forget _)) :=
     inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
-  letI c : Cone F :=
+  let c : Cone F :=
   { pt := RingCat.of (Types.Small.limitCone (F ⋙ forget _)).pt
     π :=
-      { app := fun x => SemiRingCat.ofHom _
-        naturality := (SemiRingCat.HasLimits.limitCone
-          (F ⋙ forget₂ RingCat SemiRingCat.{u})).π.naturality } }
+      { app := fun x => ofHom <| SemiRingCat.limitπRingHom.{v, u} (F ⋙ forget₂ _ SemiRingCat) x
+        naturality := fun _ _ f => RingHom.coe_inj
+          ((Types.Small.limitCone (F ⋙ forget _)).π.naturality f) } }
   createsLimitOfReflectsIso fun c' t =>
     { liftedCone := c
       validLift := by apply IsLimit.uniqueUpToIso (SemiRingCat.HasLimits.limitConeIsLimit _) t
@@ -546,28 +546,21 @@ instance :
     but it seems this would introduce additional identity morphisms in `limit.π`.
     -/
     -- Porting note: need to add these instances manually
-    letI : ReflectsIsomorphisms (forget₂ CommRingCat.{u} RingCat.{u}) :=
+    have : ReflectsIsomorphisms (forget₂ CommRingCat.{u} RingCat.{u}) :=
       CategoryTheory.reflectsIsomorphisms_forget₂ _ _
-    letI : Small.{u}
-        (Functor.sections ((F ⋙ forget₂ CommRingCat RingCat) ⋙ forget RingCat)) :=
+    have : Small.{u} (Functor.sections ((F ⋙ forget₂ CommRingCat RingCat) ⋙ forget RingCat)) :=
       inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
-    letI : Small.{u}
-        (Functor.sections ((F ⋙ forget₂ _ RingCat ⋙ forget₂ _ SemiRingCat) ⋙ forget _)) :=
+    let F' := F ⋙ forget₂ CommRingCat.{u} RingCat.{u} ⋙ forget₂ RingCat.{u} SemiRingCat.{u}
+    have : Small.{u} (Functor.sections (F' ⋙ forget _)) :=
       inferInstanceAs <| Small.{u} (F ⋙ forget _).sections
-    letI c : Cone F :=
+    let c : Cone F :=
     { pt := CommRingCat.of (Types.Small.limitCone (F ⋙ forget _)).pt
       π :=
-        { app := fun x => ofHom <|
-              SemiRingCat.limitπRingHom.{v, u}
-                (F ⋙ forget₂ CommRingCat.{u} RingCat.{u} ⋙
-                  forget₂ RingCat.{u} SemiRingCat.{u}) x
+        { app := fun x => ofHom <| SemiRingCat.limitπRingHom.{v, u} F' x
           naturality :=
-            (SemiRingCat.HasLimits.limitCone.{v, u}
-                  (F ⋙
-                    forget₂ _ RingCat.{u} ⋙
-                      forget₂ _ SemiRingCat.{u})).π.naturality } }
-    createsLimitOfReflectsIso
-    fun _ t =>
+            fun _ _ f => RingHom.coe_inj
+              ((Types.Small.limitCone (F ⋙ forget _)).π.naturality f) } }
+    createsLimitOfReflectsIso fun _ t =>
     { liftedCone := c
       validLift := IsLimit.uniqueUpToIso (RingCat.limitConeIsLimit.{v, u} _) t
       makesLimit :=
refactor(Algebra/Category): replace TypeMax constructions by UnivLE assumptions (#11420)

Replaces TypeMax limit constructions in MonCat, GroupCat, Ring, AlgebraCat and ModuleCat by the UnivLE analogs. Also generalizes some universe assumptions.

Diff
@@ -31,49 +31,57 @@ open CategoryTheory
 
 open CategoryTheory.Limits
 
-universe v u
+universe v u w
 
 noncomputable section
 
 namespace SemiRingCat
 
-variable {J : Type v} [SmallCategory J]
+variable {J : Type v} [Category.{w} J] (F : J ⥤ SemiRingCat.{u})
 
-instance semiringObj (F : J ⥤ SemiRingCatMax.{v, u}) (j) :
-    Semiring ((F ⋙ forget SemiRingCat).obj j) := by
-  change Semiring (F.obj j)
-  infer_instance
+instance semiringObj (j) : Semiring ((F ⋙ forget SemiRingCat).obj j) :=
+  inferInstanceAs <| Semiring (F.obj j)
 set_option linter.uppercaseLean3 false in
 #align SemiRing.semiring_obj SemiRingCat.semiringObj
 
 /-- The flat sections of a functor into `SemiRingCat` form a subsemiring of all sections.
 -/
-def sectionsSubsemiring (F : J ⥤ SemiRingCatMax.{v, u}) : Subsemiring.{max v u} (∀ j, F.obj j) :=
+def sectionsSubsemiring : Subsemiring (∀ j, F.obj j) :=
   -- Porting note: if `f` and `g` were inlined, it does not compile
-  letI f : J ⥤ AddMonCat.{max v u} := F ⋙ forget₂ SemiRingCatMax.{v, u} AddCommMonCat.{max v u} ⋙
+  letI f : J ⥤ AddMonCat.{u} := F ⋙ forget₂ SemiRingCat.{u} AddCommMonCat.{u} ⋙
     forget₂ AddCommMonCat AddMonCat
-  letI g : J ⥤ MonCat.{max v u} := F ⋙ forget₂ SemiRingCatMax.{v, u} MonCat.{max v u}
-  { (MonCat.sectionsSubmonoid.{v, u} (J := J) g),
-    (AddMonCat.sectionsAddSubmonoid.{v, u} (J := J) f) with
+  letI g : J ⥤ MonCat.{u} := F ⋙ forget₂ SemiRingCat.{u} MonCat.{u}
+  { (MonCat.sectionsSubmonoid (J := J) g),
+    (AddMonCat.sectionsAddSubmonoid (J := J) f) with
     carrier := (F ⋙ forget SemiRingCat).sections }
 set_option linter.uppercaseLean3 false in
 #align SemiRing.sections_subsemiring SemiRingCat.sectionsSubsemiring
 
-instance limitSemiring (F : J ⥤ SemiRingCatMax.{v, u}) :
-    Semiring (Types.limitCone.{v, u} (F ⋙ forget SemiRingCat.{max v u})).pt :=
+instance sectionsSemiring : Semiring (F ⋙ forget SemiRingCat.{u}).sections :=
   (sectionsSubsemiring F).toSemiring
+
+variable [Small.{u} (Functor.sections (F ⋙ forget SemiRingCat.{u}))]
+
+instance limitSemiring :
+    Semiring (Types.Small.limitCone.{v, u} (F ⋙ forget SemiRingCat.{u})).pt :=
+  letI : Semiring (F ⋙ forget SemiRingCat).sections := (sectionsSubsemiring F).toSemiring
+  inferInstanceAs <| Semiring (Shrink (F ⋙ forget SemiRingCat).sections)
 set_option linter.uppercaseLean3 false in
 #align SemiRing.limit_semiring SemiRingCat.limitSemiring
 
 /-- `limit.π (F ⋙ forget SemiRingCat) j` as a `RingHom`. -/
-def limitπRingHom (F : J ⥤ SemiRingCatMax.{v, u}) (j) :
-    (Types.limitCone.{v, u} (F ⋙ forget SemiRingCat)).pt →+* (F ⋙ forget SemiRingCat).obj j :=
+def limitπRingHom (j) :
+    (Types.Small.limitCone.{v, u} (F ⋙ forget SemiRingCat)).pt →+* (F ⋙ forget SemiRingCat).obj j :=
   -- Porting note: if `f` and `g` were inlined, it does not compile
-  letI f : J ⥤ AddMonCat.{max v u} := F ⋙ forget₂ SemiRingCatMax.{v, u} AddCommMonCat.{max v u} ⋙
+  letI f : J ⥤ AddMonCat.{u} := F ⋙ forget₂ SemiRingCat.{u} AddCommMonCat.{u} ⋙
     forget₂ AddCommMonCat AddMonCat
+  letI : Small.{u} (Functor.sections ((F ⋙ forget₂ _ MonCat) ⋙ forget MonCat)) :=
+    inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget SemiRingCat.{u}))
+  letI : Small.{u} (Functor.sections (f ⋙ forget AddMonCat)) :=
+    inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget SemiRingCat.{u}))
   { AddMonCat.limitπAddMonoidHom f j,
-    MonCat.limitπMonoidHom (F ⋙ forget₂ SemiRingCat MonCat.{max v u}) j with
-    toFun := (Types.limitCone (F ⋙ forget SemiRingCat)).π.app j }
+    MonCat.limitπMonoidHom (F ⋙ forget₂ SemiRingCat MonCat.{u}) j with
+    toFun := (Types.Small.limitCone (F ⋙ forget SemiRingCat)).π.app j }
 set_option linter.uppercaseLean3 false in
 #align SemiRing.limit_π_ring_hom SemiRingCat.limitπRingHom
 
@@ -85,27 +93,34 @@ namespace HasLimits
 /-- Construction of a limit cone in `SemiRingCat`.
 (Internal use only; use the limits API.)
 -/
-def limitCone (F : J ⥤ SemiRingCatMax.{v, u}) : Cone F where
-  pt := SemiRingCat.of (Types.limitCone (F ⋙ forget _)).pt
+def limitCone : Cone F where
+  pt := SemiRingCat.of (Types.Small.limitCone (F ⋙ forget _)).pt
   π :=
     { app := limitπRingHom.{v, u} F
       naturality := fun {_ _} f => RingHom.coe_inj
-        ((Types.limitCone (F ⋙ forget _)).π.naturality f) }
+        ((Types.Small.limitCone (F ⋙ forget _)).π.naturality f) }
 set_option linter.uppercaseLean3 false in
 #align SemiRing.has_limits.limit_cone SemiRingCat.HasLimits.limitCone
 
 /-- Witness that the limit cone in `SemiRingCat` is a limit cone.
 (Internal use only; use the limits API.)
 -/
-def limitConeIsLimit (F : J ⥤ SemiRingCatMax.{v, u}) : IsLimit (limitCone F) := by
-  refine IsLimit.ofFaithful (forget SemiRingCatMax.{v, u}) (Types.limitConeIsLimit.{v, u} _)
-    (fun s : Cone F => ofHom
-      { toFun := _
-        map_one' := Subtype.ext <| funext fun j => by exact (s.π.app j).map_one
-        map_mul' := fun x y => Subtype.ext <| funext fun j => by exact (s.π.app j).map_mul x y
-        map_zero' := Subtype.ext <| funext fun j => by exact (s.π.app j).map_zero
-        map_add' := fun x y => Subtype.ext <| funext fun j => by exact (s.π.app j).map_add x y })
-    fun s => rfl
+def limitConeIsLimit : IsLimit (limitCone F) := by
+  refine IsLimit.ofFaithful (forget SemiRingCat.{u}) (Types.Small.limitConeIsLimit.{v, u} _)
+    (fun s => { toFun := _, map_one' := ?_, map_mul' := ?_, map_zero' := ?_, map_add' := ?_})
+    (fun s => rfl)
+  · simp only [Functor.mapCone_π_app, forget_map, map_one]
+    rfl
+  · intro x y
+    simp only [Functor.mapCone_π_app, forget_map, map_mul]
+    erw [← map_mul (MulEquiv.symm Shrink.mulEquiv)]
+    rfl
+  · simp only [Functor.mapCone_π_app, forget_map, map_zero]
+    rfl
+  · intro x y
+    simp only [Functor.mapCone_π_app, forget_map, map_add]
+    erw [← map_add (AddEquiv.symm Shrink.addEquiv)]
+    rfl
 set_option linter.uppercaseLean3 false in
 #align SemiRing.has_limits.limit_cone_is_limit SemiRingCat.HasLimits.limitConeIsLimit
 
@@ -113,11 +128,16 @@ end HasLimits
 
 open HasLimits
 
+/-- If `(F ⋙ forget SemiRingCat).sections` is `u`-small, `F` has a limit. -/
+instance hasLimit : HasLimit F := ⟨limitCone.{v, u} F, limitConeIsLimit.{v, u} F⟩
+
+/-- If `J` is `u`-small, `SemiRingCat.{u}` has limits of shape `J`. -/
+instance hasLimitsOfShape [Small.{u} J] : HasLimitsOfShape J SemiRingCat.{u} where
+
 /- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 /-- The category of rings has all limits. -/
-instance hasLimitsOfSize : HasLimitsOfSize.{v} SemiRingCatMax.{v, u} :=
-  { has_limits_of_shape := fun _ _ =>
-      { has_limit := fun F => ⟨limitCone.{v, u} F, limitConeIsLimit.{v, u} F⟩ } }
+instance hasLimitsOfSize [UnivLE.{v, u}] : HasLimitsOfSize.{w, v} SemiRingCat.{u} where
+  has_limits_of_shape _ _ := { }
 set_option linter.uppercaseLean3 false in
 #align SemiRing.has_limits_of_size SemiRingCat.hasLimitsOfSize
 
@@ -129,16 +149,18 @@ set_option linter.uppercaseLean3 false in
 /--
 Auxiliary lemma to prove the cone induced by `limitCone` is a limit cone.
 -/
-def forget₂AddCommMonPreservesLimitsAux (F : J ⥤ SemiRingCatMax.{v, u}) :
+def forget₂AddCommMonPreservesLimitsAux :
     IsLimit ((forget₂ SemiRingCat AddCommMonCat).mapCone (limitCone F)) := by
+  letI : Small.{u} (Functor.sections ((F ⋙ forget₂ _ AddCommMonCat) ⋙ forget _)) :=
+    inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget SemiRingCat))
   apply AddCommMonCat.limitConeIsLimit.{v, u}
 set_option linter.uppercaseLean3 false in
 #align SemiRing.forget₂_AddCommMon_preserves_limits_aux SemiRingCat.forget₂AddCommMonPreservesLimitsAux
 
 /-- The forgetful functor from semirings to additive commutative monoids preserves all limits.
 -/
-instance forget₂AddCommMonPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ SemiRingCat AddCommMonCat.{max v u}) where
+instance forget₂AddCommMonPreservesLimitsOfSize [UnivLE.{v, u}] :
+    PreservesLimitsOfSize.{w, v} (forget₂ SemiRingCat AddCommMonCat.{u}) where
   preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit.{v, u} F)
@@ -154,16 +176,18 @@ set_option linter.uppercaseLean3 false in
 
 /-- An auxiliary declaration to speed up typechecking.
 -/
-def forget₂MonPreservesLimitsAux (F : J ⥤ SemiRingCatMax.{v, u}) :
+def forget₂MonPreservesLimitsAux :
     IsLimit ((forget₂ SemiRingCat MonCat).mapCone (limitCone F)) := by
-  apply MonCat.HasLimits.limitConeIsLimit (F ⋙ forget₂ SemiRingCat MonCat.{max v u})
+  letI : Small.{u} (Functor.sections ((F ⋙ forget₂ _ MonCat) ⋙ forget MonCat)) :=
+    inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget SemiRingCat))
+  apply MonCat.HasLimits.limitConeIsLimit (F ⋙ forget₂ SemiRingCat MonCat.{u})
 set_option linter.uppercaseLean3 false in
 #align SemiRing.forget₂_Mon_preserves_limits_aux SemiRingCat.forget₂MonPreservesLimitsAux
 
 /-- The forgetful functor from semirings to monoids preserves all limits.
 -/
-instance forget₂MonPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ SemiRingCat MonCat.{max v u}) where
+instance forget₂MonPreservesLimitsOfSize [UnivLE.{v, u}] :
+    PreservesLimitsOfSize.{w, v} (forget₂ SemiRingCat MonCat.{u}) where
   preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit F)
@@ -178,12 +202,12 @@ set_option linter.uppercaseLean3 false in
 
 /-- The forgetful functor from semirings to types preserves all limits.
 -/
-instance forgetPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget SemiRingCat.{max v u}) where
+instance forgetPreservesLimitsOfSize [UnivLE.{v, u}] :
+    PreservesLimitsOfSize.{w, v} (forget SemiRingCat.{u}) where
   preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit F)
-          (Types.limitConeIsLimit.{v, u} (F ⋙ forget _)) }
+          (Types.Small.limitConeIsLimit.{v, u} (F ⋙ forget _)) }
 set_option linter.uppercaseLean3 false in
 #align SemiRing.forget_preserves_limits_of_size SemiRingCat.forgetPreservesLimitsOfSize
 
@@ -201,19 +225,22 @@ abbrev CommSemiRingCatMax.{u1, u2} := CommSemiRingCat.{max u1 u2}
 
 namespace CommSemiRingCat
 
-variable {J : Type v} [SmallCategory J]
+variable {J : Type v} [Category.{w} J] (F : J ⥤ CommSemiRingCat.{u})
 
-instance commSemiringObj (F : J ⥤ CommSemiRingCatMax.{v, u}) (j) :
-    CommSemiring ((F ⋙ forget CommSemiRingCat).obj j) := by
-  change CommSemiring (F.obj j)
-  infer_instance
+instance commSemiringObj (j) :
+    CommSemiring ((F ⋙ forget CommSemiRingCat).obj j) :=
+  inferInstanceAs <| CommSemiring (F.obj j)
 set_option linter.uppercaseLean3 false in
 #align CommSemiRing.comm_semiring_obj CommSemiRingCat.commSemiringObj
 
-instance limitCommSemiring (F : J ⥤ CommSemiRingCatMax.{v, u}) :
-    CommSemiring (Types.limitCone.{v, u} (F ⋙ forget CommSemiRingCat.{max v u})).pt :=
-  @Subsemiring.toCommSemiring (∀ j, F.obj j) _
-    (SemiRingCat.sectionsSubsemiring.{v, u} (F ⋙ forget₂ CommSemiRingCat SemiRingCat.{max v u}))
+variable [Small.{u} (Functor.sections (F ⋙ forget CommSemiRingCat))]
+
+instance limitCommSemiring :
+    CommSemiring (Types.Small.limitCone.{v, u} (F ⋙ forget CommSemiRingCat.{u})).pt :=
+  letI : CommSemiring (F ⋙ forget CommSemiRingCat.{u}).sections :=
+    @Subsemiring.toCommSemiring (∀ j, F.obj j) _
+      (SemiRingCat.sectionsSubsemiring.{v, u} (F ⋙ forget₂ CommSemiRingCat.{u} SemiRingCat.{u}))
+  inferInstanceAs <| CommSemiring (Shrink (F ⋙ forget CommSemiRingCat.{u}).sections)
 set_option linter.uppercaseLean3 false in
 #align CommSemiRing.limit_comm_semiring CommSemiRingCat.limitCommSemiring
 
@@ -222,61 +249,60 @@ set_option linter.uppercaseLean3 false in
 All we need to do is notice that the limit point has a `CommSemiring` instance available,
 and then reuse the existing limit.
 -/
-instance (F : J ⥤ CommSemiRingCatMax.{v, u}) :
-    CreatesLimit F (forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u}) :=
+instance :
+    CreatesLimit F (forget₂ CommSemiRingCat.{u} SemiRingCat.{u}) :=
   -- Porting note: `CommSemiRingCat ⥤ Type` reflecting isomorphism is needed to make Lean see that
   -- `CommSemiRingCat ⥤ SemiRingCat` reflects isomorphism. `CommSemiRingCat ⥤ Type` reflecting
   -- isomorphism is added manually since Lean can't see it, but even with this addition Lean can not
   -- see `CommSemiRingCat ⥤ SemiRingCat` reflects isomorphism, so this instance is also added.
-  letI : ReflectsIsomorphisms (forget CommSemiRingCatMax.{v, u}) :=
-    CommSemiRingCat.forgetReflectIsos.{max v u}
+  letI : ReflectsIsomorphisms (forget CommSemiRingCat.{u}) :=
+    CommSemiRingCat.forgetReflectIsos.{u}
   letI : ReflectsIsomorphisms
-    (forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u}) :=
-    CategoryTheory.reflectsIsomorphisms_forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u}
+    (forget₂ CommSemiRingCat.{u} SemiRingCat.{u}) :=
+    CategoryTheory.reflectsIsomorphisms_forget₂ CommSemiRingCat.{u} SemiRingCat.{u}
+  letI : Small.{u} (Functor.sections ((F ⋙ forget₂ _ SemiRingCat) ⋙ forget _)) :=
+    inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget CommSemiRingCat))
   let c : Cone F :=
-    { pt := CommSemiRingCat.of (Types.limitCone (F ⋙ forget _)).pt
+    { pt := CommSemiRingCat.of (Types.Small.limitCone (F ⋙ forget _)).pt
       π :=
         { app := fun j => CommSemiRingCat.ofHom <| SemiRingCat.limitπRingHom.{v, u} (J := J)
-            (F ⋙ forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u}) j
+            (F ⋙ forget₂ CommSemiRingCat.{u} SemiRingCat.{u}) j
           naturality := (SemiRingCat.HasLimits.limitCone.{v, u}
-            (F ⋙ forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u})).π.naturality } }
+            (F ⋙ forget₂ CommSemiRingCat.{u} SemiRingCat.{u})).π.naturality } }
   createsLimitOfReflectsIso fun c' t =>
     { liftedCone := c
       validLift := IsLimit.uniqueUpToIso (SemiRingCat.HasLimits.limitConeIsLimit.{v, u} _) t
       makesLimit := by
-        refine IsLimit.ofFaithful (forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u})
-          (SemiRingCat.HasLimits.limitConeIsLimit.{v, u} _)
-          (fun s : Cone F => CommSemiRingCat.ofHom
-            { toFun := _
-              map_one' := Subtype.ext <| funext fun j => by exact (s.π.app j).map_one
-              map_mul' := fun x y => Subtype.ext <| funext fun j => by exact (s.π.app j).map_mul x y
-              map_zero' := Subtype.ext <| funext fun j => by exact (s.π.app j).map_zero
-              map_add' := fun x y => Subtype.ext <| funext fun j => by exact (s.π.app j).map_add x y
-              })
-          fun s => rfl }
+        refine IsLimit.ofFaithful (forget₂ CommSemiRingCat.{u} SemiRingCat.{u})
+          (SemiRingCat.HasLimits.limitConeIsLimit.{v, u} _) (fun s => _) fun s => rfl }
 
 /-- A choice of limit cone for a functor into `CommSemiRingCat`.
 (Generally, you'll just want to use `limit F`.)
 -/
-def limitCone (F : J ⥤ CommSemiRingCatMax.{v, u}) : Cone F :=
-  liftLimit (limit.isLimit (F ⋙ forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u}))
+def limitCone : Cone F :=
+  letI : Small.{u} (Functor.sections ((F ⋙ forget₂ _ SemiRingCat.{u}) ⋙ forget _)) :=
+    inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
+  liftLimit (limit.isLimit (F ⋙ forget₂ CommSemiRingCat.{u} SemiRingCat.{u}))
 set_option linter.uppercaseLean3 false in
 #align CommSemiRing.limit_cone CommSemiRingCat.limitCone
 
 /-- The chosen cone is a limit cone.
 (Generally, you'll just want to use `limit.cone F`.)
 -/
-def limitConeIsLimit (F : J ⥤ CommSemiRingCatMax.{v, u}) : IsLimit (limitCone F) :=
+def limitConeIsLimit : IsLimit (limitCone F) :=
   liftedLimitIsLimit _
 set_option linter.uppercaseLean3 false in
 #align CommSemiRing.limit_cone_is_limit CommSemiRingCat.limitConeIsLimit
 
+/-- If `(F ⋙ forget CommSemiRingCat).sections` is `u`-small, `F` has a limit. -/
+instance hasLimit : HasLimit F := ⟨limitCone.{v, u} F, limitConeIsLimit.{v, u} F⟩
+
+/-- If `J` is `u`-small, `CommSemiRingCat.{u}` has limits of shape `J`. -/
+instance hasLimitsOfShape [Small.{u} J] : HasLimitsOfShape J CommSemiRingCat.{u} where
+
 /- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 /-- The category of rings has all limits. -/
-instance hasLimitsOfSize : HasLimitsOfSize.{v, v} CommSemiRingCatMax.{v, u} :=
-  { has_limits_of_shape := fun _ _ =>
-      { has_limit := fun F =>
-          hasLimit_of_created F (forget₂ CommSemiRingCat SemiRingCatMax.{v, u}) } }
+instance hasLimitsOfSize [UnivLE.{v, u}] : HasLimitsOfSize.{w, v} CommSemiRingCat.{u} where
 set_option linter.uppercaseLean3 false in
 #align CommSemiRing.has_limits_of_size CommSemiRingCat.hasLimitsOfSize
 
@@ -287,12 +313,12 @@ set_option linter.uppercaseLean3 false in
 
 /-- The forgetful functor from rings to semirings preserves all limits.
 -/
-instance forget₂SemiRingPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ CommSemiRingCat SemiRingCat.{max v u}) where
+instance forget₂SemiRingPreservesLimitsOfSize [UnivLE.{v, u}] :
+    PreservesLimitsOfSize.{w, v} (forget₂ CommSemiRingCat SemiRingCat.{u}) where
   preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit.{v, u} F)
-          (SemiRingCat.HasLimits.limitConeIsLimit _) }
+          (SemiRingCat.HasLimits.limitConeIsLimit (F ⋙ forget₂ _ SemiRingCat)) }
 set_option linter.uppercaseLean3 false in
 #align CommSemiRing.forget₂_SemiRing_preserves_limits_of_size CommSemiRingCat.forget₂SemiRingPreservesLimitsOfSize
 
@@ -305,12 +331,12 @@ set_option linter.uppercaseLean3 false in
 /-- The forgetful functor from rings to types preserves all limits. (That is, the underlying
 types could have been computed instead as limits in the category of types.)
 -/
-instance forgetPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget CommSemiRingCatMax.{v, u}) where
+instance forgetPreservesLimitsOfSize [UnivLE.{v, u}] :
+    PreservesLimitsOfSize.{w, v} (forget CommSemiRingCat.{u}) where
   preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit.{v, u} F)
-          (Types.limitConeIsLimit.{v, u} _) }
+          (Types.Small.limitConeIsLimit.{v, u} _) }
 set_option linter.uppercaseLean3 false in
 #align CommSemiRing.forget_preserves_limits_of_size CommSemiRingCat.forgetPreservesLimitsOfSize
 
@@ -328,30 +354,31 @@ abbrev RingCatMax.{u1, u2} := RingCat.{max u1 u2}
 
 namespace RingCat
 
-variable {J : Type v} [SmallCategory J]
+variable {J : Type v} [Category.{w} J] (F : J ⥤ RingCat.{u})
 
-instance ringObj (F : J ⥤ RingCatMax.{v, u}) (j) : Ring ((F ⋙ forget RingCat).obj j) := by
-  change Ring (F.obj j)
-  infer_instance
+instance ringObj (j) : Ring ((F ⋙ forget RingCat).obj j) :=
+  inferInstanceAs <| Ring (F.obj j)
 set_option linter.uppercaseLean3 false in
 #align Ring.ring_obj RingCat.ringObj
 
 /-- The flat sections of a functor into `RingCat` form a subring of all sections.
 -/
-def sectionsSubring (F : J ⥤ RingCatMax.{v, u}) : Subring.{max v u} (∀ j, F.obj j) :=
-  letI f : J ⥤ AddGroupCat.{max v u} :=
-    F ⋙ forget₂ RingCatMax.{v, u} AddCommGroupCat.{max v u} ⋙
-    forget₂ AddCommGroupCat.{max v u} AddGroupCat.{max v u}
-  letI g : J ⥤ SemiRingCatMax.{v, u} := F ⋙ forget₂ RingCatMax.{v, u} SemiRingCat.{max v u}
-  { AddGroupCat.sectionsAddSubgroup.{v, u} (J := J) f,
-    SemiRingCat.sectionsSubsemiring.{v, u} (J := J) g with
-    carrier := (F ⋙ forget RingCatMax.{v, u}).sections }
+def sectionsSubring : Subring (∀ j, F.obj j) :=
+  letI f : J ⥤ AddGroupCat.{u} :=
+    F ⋙ forget₂ RingCat.{u} AddCommGroupCat.{u} ⋙
+    forget₂ AddCommGroupCat.{u} AddGroupCat.{u}
+  letI g : J ⥤ SemiRingCat.{u} := F ⋙ forget₂ RingCat.{u} SemiRingCat.{u}
+  { AddGroupCat.sectionsAddSubgroup (J := J) f,
+    SemiRingCat.sectionsSubsemiring (J := J) g with
+    carrier := (F ⋙ forget RingCat.{u}).sections }
 set_option linter.uppercaseLean3 false in
 #align Ring.sections_subring RingCat.sectionsSubring
 
-instance limitRing (F : J ⥤ RingCatMax.{v, u}) :
-    Ring.{max v u} (Types.limitCone.{v, u} (F ⋙ forget RingCatMax.{v, u})).pt :=
-  (sectionsSubring F).toRing
+variable [Small.{u} (Functor.sections (F ⋙ forget RingCat.{u}))]
+
+instance limitRing : Ring.{u} (Types.Small.limitCone.{v, u} (F ⋙ forget RingCat.{u})).pt :=
+  letI : Ring (F ⋙ forget RingCat.{u}).sections := (sectionsSubring F).toRing
+  inferInstanceAs <| Ring (Shrink _)
 set_option linter.uppercaseLean3 false in
 #align Ring.limit_ring RingCat.limitRing
 
@@ -360,45 +387,54 @@ set_option linter.uppercaseLean3 false in
 All we need to do is notice that the limit point has a `Ring` instance available,
 and then reuse the existing limit.
 -/
-instance (F : J ⥤ RingCatMax.{v, u}) :
-    CreatesLimit F (forget₂ RingCatMax.{v, u} SemiRingCatMax.{v, u}) :=
-  letI : ReflectsIsomorphisms (forget₂ RingCatMax SemiRingCatMax) :=
+instance : CreatesLimit F (forget₂ RingCat.{u} SemiRingCat.{u}) :=
+  letI : ReflectsIsomorphisms (forget₂ RingCat SemiRingCat) :=
     CategoryTheory.reflectsIsomorphisms_forget₂ _ _
+  letI : Small.{u} (Functor.sections ((F ⋙ forget₂ _ SemiRingCat) ⋙ forget _)) :=
+    inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
   letI c : Cone F :=
-  { pt := RingCat.of (Types.limitCone (F ⋙ forget _)).pt
+  { pt := RingCat.of (Types.Small.limitCone (F ⋙ forget _)).pt
     π :=
       { app := fun x => SemiRingCat.ofHom _
         naturality := (SemiRingCat.HasLimits.limitCone
-          (F ⋙ forget₂ RingCat SemiRingCat.{max v u})).π.naturality } }
+          (F ⋙ forget₂ RingCat SemiRingCat.{u})).π.naturality } }
   createsLimitOfReflectsIso fun c' t =>
     { liftedCone := c
       validLift := by apply IsLimit.uniqueUpToIso (SemiRingCat.HasLimits.limitConeIsLimit _) t
       makesLimit :=
-        IsLimit.ofFaithful (forget₂ RingCat SemiRingCat.{max v u})
+        IsLimit.ofFaithful (forget₂ RingCat SemiRingCat.{u})
           (by apply SemiRingCat.HasLimits.limitConeIsLimit _) (fun s => _) fun s => rfl }
 
 /-- A choice of limit cone for a functor into `RingCat`.
 (Generally, you'll just want to use `limit F`.)
 -/
-def limitCone (F : J ⥤ RingCatMax.{v, u}) : Cone F :=
-  liftLimit (limit.isLimit (F ⋙ forget₂ RingCatMax.{v, u} SemiRingCatMax.{v, u}))
+def limitCone : Cone F :=
+  letI : Small.{u} (Functor.sections ((F ⋙ forget₂ _ SemiRingCat) ⋙ forget _)) :=
+    inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
+  liftLimit (limit.isLimit (F ⋙ forget₂ RingCat.{u} SemiRingCat.{u}))
 set_option linter.uppercaseLean3 false in
 #align Ring.limit_cone RingCat.limitCone
 
 /-- The chosen cone is a limit cone.
 (Generally, you'll just want to use `limit.cone F`.)
 -/
-def limitConeIsLimit (F : J ⥤ RingCatMax.{v, u}) : IsLimit (limitCone F) :=
+def limitConeIsLimit : IsLimit (limitCone F) :=
   liftedLimitIsLimit _
 set_option linter.uppercaseLean3 false in
 #align Ring.limit_cone_is_limit RingCat.limitConeIsLimit
 
+/-- If `(F ⋙ forget RingCat).sections` is `u`-small, `F` has a limit. -/
+instance hasLimit : HasLimit F :=
+  letI : Small.{u} (Functor.sections ((F ⋙ forget₂ _ SemiRingCat) ⋙ forget _)) :=
+    inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
+  hasLimit_of_created F (forget₂ RingCat.{u} SemiRingCat.{u})
+
+/-- If `J` is `u`-small, `RingCat.{u}` has limits of shape `J`. -/
+instance hasLimitsOfShape [Small.{u} J] : HasLimitsOfShape J RingCat.{u} where
+
 /- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 /-- The category of rings has all limits. -/
-instance hasLimitsOfSize : HasLimitsOfSize.{v, v} RingCat.{max v u} :=
-  { has_limits_of_shape := fun {_ _} =>
-      { has_limit := fun {F} => hasLimit_of_created F
-          (forget₂ RingCatMax.{v, u} SemiRingCatMax.{v, u}) } }
+instance hasLimitsOfSize [UnivLE.{v, u}] : HasLimitsOfSize.{w, v} RingCat.{u} where
 set_option linter.uppercaseLean3 false in
 #align Ring.has_limits_of_size RingCat.hasLimitsOfSize
 
@@ -409,8 +445,8 @@ set_option linter.uppercaseLean3 false in
 
 /-- The forgetful functor from rings to semirings preserves all limits.
 -/
-instance forget₂SemiRingPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ RingCat SemiRingCat.{max v u}) where
+instance forget₂SemiRingPreservesLimitsOfSize [UnivLE.{v, u}] :
+    PreservesLimitsOfSize.{w, v} (forget₂ RingCat SemiRingCat.{u}) where
   preservesLimitsOfShape {_ _} :=
       { preservesLimit := fun {F} =>
           preservesLimitOfPreservesLimitCone (limitConeIsLimit.{v, u} F)
@@ -425,18 +461,20 @@ set_option linter.uppercaseLean3 false in
 
 /-- An auxiliary declaration to speed up typechecking.
 -/
-def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ RingCatMax.{v, u}) :
-    IsLimit ((forget₂ RingCatMax.{v, u} AddCommGroupCat).mapCone (limitCone.{v, u} F)) := by
+def forget₂AddCommGroupPreservesLimitsAux :
+    IsLimit ((forget₂ RingCat.{u} AddCommGroupCat).mapCone (limitCone.{v, u} F)) := by
   -- Porting note: inline `f` would not compile
-  letI f := (F ⋙ forget₂ RingCatMax.{v, u} AddCommGroupCat.{max v u})
+  letI f := (F ⋙ forget₂ RingCat.{u} AddCommGroupCat.{u})
+  letI : Small.{u} (Functor.sections (f ⋙ forget _)) :=
+    inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
   apply AddCommGroupCat.limitConeIsLimit.{v, u} f
 set_option linter.uppercaseLean3 false in
 #align Ring.forget₂_AddCommGroup_preserves_limits_aux RingCat.forget₂AddCommGroupPreservesLimitsAux
 
 /-- The forgetful functor from rings to additive commutative groups preserves all limits.
 -/
-instance forget₂AddCommGroupPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ RingCatMax.{v, u} AddCommGroupCat.{max v u}) where
+instance forget₂AddCommGroupPreservesLimitsOfSize [UnivLE.{v, u}] :
+    PreservesLimitsOfSize.{v, v} (forget₂ RingCat.{u} AddCommGroupCat.{u}) where
   preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit.{v, u} F)
@@ -453,11 +491,12 @@ set_option linter.uppercaseLean3 false in
 /-- The forgetful functor from rings to types preserves all limits. (That is, the underlying
 types could have been computed instead as limits in the category of types.)
 -/
-instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget RingCatMax.{v, u}) where
+instance forgetPreservesLimitsOfSize [UnivLE.{v, u}] :
+    PreservesLimitsOfSize.{v, v} (forget RingCat.{u}) where
   preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit.{v, u} F)
-          (Types.limitConeIsLimit.{v, u} _) }
+          (Types.Small.limitConeIsLimit.{v, u} _) }
 set_option linter.uppercaseLean3 false in
 #align Ring.forget_preserves_limits_of_size RingCat.forgetPreservesLimitsOfSize
 
@@ -475,19 +514,20 @@ abbrev CommRingCatMax.{u1, u2} := CommRingCat.{max u1 u2}
 
 namespace CommRingCat
 
-variable {J : Type v} [SmallCategory J]
+variable {J : Type v} [Category.{w} J] (F : J ⥤ CommRingCat.{u})
 
-instance commRingObj (F : J ⥤ CommRingCatMax.{v, u}) (j) :
-    CommRing ((F ⋙ forget CommRingCat).obj j) := by
-  change CommRing (F.obj j)
-  infer_instance
+instance commRingObj (j) : CommRing ((F ⋙ forget CommRingCat).obj j) :=
+  inferInstanceAs <| CommRing (F.obj j)
 set_option linter.uppercaseLean3 false in
 #align CommRing.comm_ring_obj CommRingCat.commRingObj
 
-instance limitCommRing (F : J ⥤ CommRingCatMax.{v, u}) :
-    CommRing.{max v u} (Types.limitCone.{v, u} (F ⋙ forget CommRingCatMax.{v, u})).pt :=
-  @Subring.toCommRing (∀ j, F.obj j) _
-    (RingCat.sectionsSubring.{v, u} (F ⋙ forget₂ CommRingCat RingCat.{max v u}))
+variable [Small.{u} (Functor.sections (F ⋙ forget CommRingCat))]
+
+instance limitCommRing :
+    CommRing.{u} (Types.Small.limitCone.{v, u} (F ⋙ forget CommRingCat.{u})).pt :=
+  letI : CommRing (F ⋙ forget CommRingCat).sections := @Subring.toCommRing (∀ j, F.obj j) _
+    (RingCat.sectionsSubring.{v, u} (F ⋙ forget₂ CommRingCat RingCat.{u}))
+  inferInstanceAs <| CommRing (Shrink _)
 set_option linter.uppercaseLean3 false in
 #align CommRing.limit_comm_ring CommRingCat.limitCommRing
 
@@ -496,8 +536,8 @@ set_option linter.uppercaseLean3 false in
 All we need to do is notice that the limit point has a `CommRing` instance available,
 and then reuse the existing limit.
 -/
-instance (F : J ⥤ CommRingCatMax.{v, u}) :
-   CreatesLimit F (forget₂ CommRingCatMax.{v, u} RingCatMax.{v, u}) :=
+instance :
+   CreatesLimit F (forget₂ CommRingCat.{u} RingCat.{u}) :=
   /-
     A terse solution here would be
     ```
@@ -506,58 +546,68 @@ instance (F : J ⥤ CommRingCatMax.{v, u}) :
     but it seems this would introduce additional identity morphisms in `limit.π`.
     -/
     -- Porting note: need to add these instances manually
-    letI : ReflectsIsomorphisms (forget₂ CommRingCatMax.{v, u} RingCatMax.{v, u}) :=
+    letI : ReflectsIsomorphisms (forget₂ CommRingCat.{u} RingCat.{u}) :=
       CategoryTheory.reflectsIsomorphisms_forget₂ _ _
+    letI : Small.{u}
+        (Functor.sections ((F ⋙ forget₂ CommRingCat RingCat) ⋙ forget RingCat)) :=
+      inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
+    letI : Small.{u}
+        (Functor.sections ((F ⋙ forget₂ _ RingCat ⋙ forget₂ _ SemiRingCat) ⋙ forget _)) :=
+      inferInstanceAs <| Small.{u} (F ⋙ forget _).sections
     letI c : Cone F :=
-    { pt := CommRingCat.of (Types.limitCone (F ⋙ forget _)).pt
+    { pt := CommRingCat.of (Types.Small.limitCone (F ⋙ forget _)).pt
       π :=
         { app := fun x => ofHom <|
               SemiRingCat.limitπRingHom.{v, u}
-                (F ⋙ forget₂ CommRingCatMax.{v, u} RingCatMax.{v, u} ⋙
-                  forget₂ RingCatMax.{v, u} SemiRingCatMax.{v, u}) x
+                (F ⋙ forget₂ CommRingCat.{u} RingCat.{u} ⋙
+                  forget₂ RingCat.{u} SemiRingCat.{u}) x
           naturality :=
             (SemiRingCat.HasLimits.limitCone.{v, u}
                   (F ⋙
-                    forget₂ _ RingCat.{max v u} ⋙
-                      forget₂ _ SemiRingCat.{max v u})).π.naturality } }
+                    forget₂ _ RingCat.{u} ⋙
+                      forget₂ _ SemiRingCat.{u})).π.naturality } }
     createsLimitOfReflectsIso
     fun _ t =>
     { liftedCone := c
       validLift := IsLimit.uniqueUpToIso (RingCat.limitConeIsLimit.{v, u} _) t
       makesLimit :=
-        IsLimit.ofFaithful (forget₂ _ RingCatMax.{v, u})
-          (RingCat.limitConeIsLimit.{v, u} (F ⋙ forget₂ CommRingCatMax.{v, u} RingCatMax.{v, u}))
+        IsLimit.ofFaithful (forget₂ _ RingCat.{u})
+          (RingCat.limitConeIsLimit.{v, u} (F ⋙ forget₂ CommRingCat.{u} RingCat.{u}))
           (fun s : Cone F => ofHom <|
               (RingCat.limitConeIsLimit.{v, u}
-                (F ⋙ forget₂ CommRingCatMax.{v, u} RingCatMax.{v, u})).lift
-                ((forget₂ _ RingCatMax.{v, u}).mapCone s)) fun _ => rfl }
+                (F ⋙ forget₂ CommRingCat.{u} RingCat.{u})).lift
+                ((forget₂ _ RingCat.{u}).mapCone s)) fun _ => rfl }
 
 /-- A choice of limit cone for a functor into `CommRingCat`.
 (Generally, you'll just want to use `limit F`.)
 -/
-def limitCone (F : J ⥤ CommRingCatMax.{v, u}) : Cone F :=
-  -- Porting note: add this manually to get `liftLimit`
-  letI : HasLimitsOfSize RingCatMax.{v, u} := RingCat.hasLimitsOfSize.{v, u}
-  liftLimit (limit.isLimit (F ⋙ forget₂ CommRingCatMax.{v, u} RingCatMax.{v, u}))
+def limitCone : Cone F :=
+  letI : Small.{u} (Functor.sections ((F ⋙ forget₂ CommRingCat RingCat) ⋙ forget RingCat)) :=
+    inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
+  liftLimit (limit.isLimit (F ⋙ forget₂ CommRingCat.{u} RingCat.{u}))
 set_option linter.uppercaseLean3 false in
 #align CommRing.limit_cone CommRingCat.limitCone
 
 /-- The chosen cone is a limit cone.
 (Generally, you'll just want to use `limit.cone F`.)
 -/
-def limitConeIsLimit (F : J ⥤ CommRingCatMax.{v, u}) : IsLimit (limitCone.{v, u} F) :=
+def limitConeIsLimit : IsLimit (limitCone.{v, u} F) :=
   liftedLimitIsLimit _
 set_option linter.uppercaseLean3 false in
 #align CommRing.limit_cone_is_limit CommRingCat.limitConeIsLimit
 
+/-- If `(F ⋙ forget CommRingCat).sections` is `u`-small, `F` has a limit. -/
+instance hasLimit : HasLimit F :=
+  letI : Small.{u} (Functor.sections ((F ⋙ forget₂ CommRingCat RingCat) ⋙ forget RingCat)) :=
+    inferInstanceAs <| Small.{u} (Functor.sections (F ⋙ forget _))
+  hasLimit_of_created F (forget₂ CommRingCat.{u} RingCat.{u})
+
+/-- If `J` is `u`-small, `CommRingCat.{u}` has limits of shape `J`. -/
+instance hasLimitsOfShape [Small.{u} J] : HasLimitsOfShape J CommRingCat.{u} where
+
 /- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 /-- The category of commutative rings has all limits. -/
-instance hasLimitsOfSize : HasLimitsOfSize.{v, v} CommRingCatMax.{v, u} :=
-  -- Porting note: add this manually to get `liftLimit`
-  letI : HasLimitsOfSize RingCatMax.{v, u} := RingCat.hasLimitsOfSize.{v, u}
-  { has_limits_of_shape := fun {_ _} =>
-      { has_limit := fun F => hasLimit_of_created F
-          (forget₂ CommRingCatMax.{v, u} RingCatMax.{v, u}) } }
+instance hasLimitsOfSize [UnivLE.{v, u}] : HasLimitsOfSize.{w, v} CommRingCat.{u} where
 set_option linter.uppercaseLean3 false in
 #align CommRing.has_limits_of_size CommRingCat.hasLimitsOfSize
 
@@ -569,11 +619,11 @@ set_option linter.uppercaseLean3 false in
 /-- The forgetful functor from commutative rings to rings preserves all limits.
 (That is, the underlying rings could have been computed instead as limits in the category of rings.)
 -/
-instance forget₂RingPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ CommRingCat RingCat.{max v u}) where
+instance forget₂RingPreservesLimitsOfSize [UnivLE.{v, u}] :
+    PreservesLimitsOfSize.{w, v} (forget₂ CommRingCat RingCat.{u}) where
   preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
-        preservesLimitOfPreservesLimitCone.{v, v} (limitConeIsLimit.{v, u} F)
+        preservesLimitOfPreservesLimitCone.{w, v} (limitConeIsLimit.{v, u} F)
           (RingCat.limitConeIsLimit.{v, u} _) }
 set_option linter.uppercaseLean3 false in
 #align CommRing.forget₂_Ring_preserves_limits_of_size CommRingCat.forget₂RingPreservesLimitsOfSize
@@ -585,9 +635,11 @@ set_option linter.uppercaseLean3 false in
 
 /-- An auxiliary declaration to speed up typechecking.
 -/
-def forget₂CommSemiRingPreservesLimitsAux (F : J ⥤ CommRingCatMax.{v, u}) :
+def forget₂CommSemiRingPreservesLimitsAux :
     IsLimit ((forget₂ CommRingCat CommSemiRingCat).mapCone (limitCone F)) := by
-  apply CommSemiRingCat.limitConeIsLimit (F ⋙ forget₂ CommRingCat CommSemiRingCat.{max v u})
+  letI : Small.{u} ((F ⋙ forget₂ _ CommSemiRingCat) ⋙ forget _).sections :=
+    inferInstanceAs <| Small.{u} (F ⋙ forget _).sections
+  apply CommSemiRingCat.limitConeIsLimit (F ⋙ forget₂ CommRingCat CommSemiRingCat.{u})
 set_option linter.uppercaseLean3 false in
 #align CommRing.forget₂_CommSemiRing_preserves_limits_aux CommRingCat.forget₂CommSemiRingPreservesLimitsAux
 
@@ -595,8 +647,8 @@ set_option linter.uppercaseLean3 false in
 (That is, the underlying commutative semirings could have been computed instead as limits
 in the category of commutative semirings.)
 -/
-instance forget₂CommSemiRingPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ CommRingCat CommSemiRingCat.{max v u}) where
+instance forget₂CommSemiRingPreservesLimitsOfSize [UnivLE.{v, u}] :
+    PreservesLimitsOfSize.{w, v} (forget₂ CommRingCat CommSemiRingCat.{u}) where
   preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit.{v, u} F)
@@ -613,12 +665,12 @@ set_option linter.uppercaseLean3 false in
 /-- The forgetful functor from commutative rings to types preserves all limits.
 (That is, the underlying types could have been computed instead as limits in the category of types.)
 -/
-instance forgetPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget CommRingCat.{max v u}) where
+instance forgetPreservesLimitsOfSize [UnivLE.{v, u}] :
+    PreservesLimitsOfSize.{w, v} (forget CommRingCat.{u}) where
   preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
-        preservesLimitOfPreservesLimitCone.{v, v} (limitConeIsLimit.{v, u} F)
-          (Types.limitConeIsLimit.{v, u} _) }
+        preservesLimitOfPreservesLimitCone.{w, v} (limitConeIsLimit.{v, u} F)
+          (Types.Small.limitConeIsLimit.{v, u} _) }
 set_option linter.uppercaseLean3 false in
 #align CommRing.forget_preserves_limits_of_size CommRingCat.forgetPreservesLimitsOfSize
 
style: reduce spacing variation in "porting note" comments (#10886)

In this pull request, I have systematically eliminated the leading whitespace preceding the colon (:) within all unlabelled or unclassified porting notes. This adjustment facilitates a more efficient review process for the remaining notes by ensuring no entries are overlooked due to formatting inconsistencies.

Diff
@@ -49,7 +49,7 @@ set_option linter.uppercaseLean3 false in
 /-- The flat sections of a functor into `SemiRingCat` form a subsemiring of all sections.
 -/
 def sectionsSubsemiring (F : J ⥤ SemiRingCatMax.{v, u}) : Subsemiring.{max v u} (∀ j, F.obj j) :=
-  -- Porting note : if `f` and `g` were inlined, it does not compile
+  -- Porting note: if `f` and `g` were inlined, it does not compile
   letI f : J ⥤ AddMonCat.{max v u} := F ⋙ forget₂ SemiRingCatMax.{v, u} AddCommMonCat.{max v u} ⋙
     forget₂ AddCommMonCat AddMonCat
   letI g : J ⥤ MonCat.{max v u} := F ⋙ forget₂ SemiRingCatMax.{v, u} MonCat.{max v u}
@@ -68,7 +68,7 @@ set_option linter.uppercaseLean3 false in
 /-- `limit.π (F ⋙ forget SemiRingCat) j` as a `RingHom`. -/
 def limitπRingHom (F : J ⥤ SemiRingCatMax.{v, u}) (j) :
     (Types.limitCone.{v, u} (F ⋙ forget SemiRingCat)).pt →+* (F ⋙ forget SemiRingCat).obj j :=
-  -- Porting note : if `f` and `g` were inlined, it does not compile
+  -- Porting note: if `f` and `g` were inlined, it does not compile
   letI f : J ⥤ AddMonCat.{max v u} := F ⋙ forget₂ SemiRingCatMax.{v, u} AddCommMonCat.{max v u} ⋙
     forget₂ AddCommMonCat AddMonCat
   { AddMonCat.limitπAddMonoidHom f j,
@@ -224,7 +224,7 @@ and then reuse the existing limit.
 -/
 instance (F : J ⥤ CommSemiRingCatMax.{v, u}) :
     CreatesLimit F (forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u}) :=
-  -- Porting note : `CommSemiRingCat ⥤ Type` reflecting isomorphism is needed to make Lean see that
+  -- Porting note: `CommSemiRingCat ⥤ Type` reflecting isomorphism is needed to make Lean see that
   -- `CommSemiRingCat ⥤ SemiRingCat` reflects isomorphism. `CommSemiRingCat ⥤ Type` reflecting
   -- isomorphism is added manually since Lean can't see it, but even with this addition Lean can not
   -- see `CommSemiRingCat ⥤ SemiRingCat` reflects isomorphism, so this instance is also added.
@@ -427,7 +427,7 @@ set_option linter.uppercaseLean3 false in
 -/
 def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ RingCatMax.{v, u}) :
     IsLimit ((forget₂ RingCatMax.{v, u} AddCommGroupCat).mapCone (limitCone.{v, u} F)) := by
-  -- Porting note : inline `f` would not compile
+  -- Porting note: inline `f` would not compile
   letI f := (F ⋙ forget₂ RingCatMax.{v, u} AddCommGroupCat.{max v u})
   apply AddCommGroupCat.limitConeIsLimit.{v, u} f
 set_option linter.uppercaseLean3 false in
@@ -505,7 +505,7 @@ instance (F : J ⥤ CommRingCatMax.{v, u}) :
     ```
     but it seems this would introduce additional identity morphisms in `limit.π`.
     -/
-    -- Porting note : need to add these instances manually
+    -- Porting note: need to add these instances manually
     letI : ReflectsIsomorphisms (forget₂ CommRingCatMax.{v, u} RingCatMax.{v, u}) :=
       CategoryTheory.reflectsIsomorphisms_forget₂ _ _
     letI c : Cone F :=
@@ -536,7 +536,7 @@ instance (F : J ⥤ CommRingCatMax.{v, u}) :
 (Generally, you'll just want to use `limit F`.)
 -/
 def limitCone (F : J ⥤ CommRingCatMax.{v, u}) : Cone F :=
-  -- Porting note : add this manually to get `liftLimit`
+  -- Porting note: add this manually to get `liftLimit`
   letI : HasLimitsOfSize RingCatMax.{v, u} := RingCat.hasLimitsOfSize.{v, u}
   liftLimit (limit.isLimit (F ⋙ forget₂ CommRingCatMax.{v, u} RingCatMax.{v, u}))
 set_option linter.uppercaseLean3 false in
@@ -553,7 +553,7 @@ set_option linter.uppercaseLean3 false in
 /- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 /-- The category of commutative rings has all limits. -/
 instance hasLimitsOfSize : HasLimitsOfSize.{v, v} CommRingCatMax.{v, u} :=
-  -- Porting note : add this manually to get `liftLimit`
+  -- Porting note: add this manually to get `liftLimit`
   letI : HasLimitsOfSize RingCatMax.{v, u} := RingCat.hasLimitsOfSize.{v, u}
   { has_limits_of_shape := fun {_ _} =>
       { has_limit := fun F => hasLimit_of_created F
chore: replace anonymous morphism constructors with named fields (#7015)

This makes it easier to refactor the order or inheritance structure of morphisms without having to change all of the anonymous constructors.

This is far from exhaustive.

Diff
@@ -99,10 +99,12 @@ set_option linter.uppercaseLean3 false in
 -/
 def limitConeIsLimit (F : J ⥤ SemiRingCatMax.{v, u}) : IsLimit (limitCone F) := by
   refine IsLimit.ofFaithful (forget SemiRingCatMax.{v, u}) (Types.limitConeIsLimit.{v, u} _)
-    (fun s : Cone F => ofHom ⟨⟨⟨_, Subtype.ext <| funext fun j => by exact (s.π.app j).map_one⟩,
-      fun x y => Subtype.ext <| funext fun j => by exact (s.π.app j).map_mul x y⟩,
-      Subtype.ext <| funext fun j => by exact (s.π.app j).map_zero,
-      fun x y => Subtype.ext <| funext fun j => by exact (s.π.app j).map_add x y⟩)
+    (fun s : Cone F => ofHom
+      { toFun := _
+        map_one' := Subtype.ext <| funext fun j => by exact (s.π.app j).map_one
+        map_mul' := fun x y => Subtype.ext <| funext fun j => by exact (s.π.app j).map_mul x y
+        map_zero' := Subtype.ext <| funext fun j => by exact (s.π.app j).map_zero
+        map_add' := fun x y => Subtype.ext <| funext fun j => by exact (s.π.app j).map_add x y })
     fun s => rfl
 set_option linter.uppercaseLean3 false in
 #align SemiRing.has_limits.limit_cone_is_limit SemiRingCat.HasLimits.limitConeIsLimit
@@ -245,10 +247,12 @@ instance (F : J ⥤ CommSemiRingCatMax.{v, u}) :
         refine IsLimit.ofFaithful (forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u})
           (SemiRingCat.HasLimits.limitConeIsLimit.{v, u} _)
           (fun s : Cone F => CommSemiRingCat.ofHom
-            ⟨⟨⟨_, Subtype.ext <| funext fun j => by exact (s.π.app j).map_one⟩,
-            fun x y => Subtype.ext <| funext fun j => by exact (s.π.app j).map_mul x y⟩,
-            Subtype.ext <| funext fun j => by exact (s.π.app j).map_zero,
-            fun x y => Subtype.ext <| funext fun j => by exact (s.π.app j).map_add x y⟩)
+            { toFun := _
+              map_one' := Subtype.ext <| funext fun j => by exact (s.π.app j).map_one
+              map_mul' := fun x y => Subtype.ext <| funext fun j => by exact (s.π.app j).map_mul x y
+              map_zero' := Subtype.ext <| funext fun j => by exact (s.π.app j).map_zero
+              map_add' := fun x y => Subtype.ext <| funext fun j => by exact (s.π.app j).map_add x y
+              })
           fun s => rfl }
 
 /-- A choice of limit cone for a functor into `CommSemiRingCat`.
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,17 +2,14 @@
 Copyright (c) 2019 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module algebra.category.Ring.limits
-! leanprover-community/mathlib commit c43486ecf2a5a17479a32ce09e4818924145e90e
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.Ring.Pi
 import Mathlib.Algebra.Category.Ring.Basic
 import Mathlib.Algebra.Category.GroupCat.Limits
 import Mathlib.RingTheory.Subring.Basic
 
+#align_import algebra.category.Ring.limits from "leanprover-community/mathlib"@"c43486ecf2a5a17479a32ce09e4818924145e90e"
+
 /-!
 # The category of (commutative) rings has all limits
 
chore: tidy various files (#5268)
Diff
@@ -49,7 +49,7 @@ instance semiringObj (F : J ⥤ SemiRingCatMax.{v, u}) (j) :
 set_option linter.uppercaseLean3 false in
 #align SemiRing.semiring_obj SemiRingCat.semiringObj
 
-/-- The flat sections of a functor into `SemiRing` form a subsemiring of all sections.
+/-- The flat sections of a functor into `SemiRingCat` form a subsemiring of all sections.
 -/
 def sectionsSubsemiring (F : J ⥤ SemiRingCatMax.{v, u}) : Subsemiring.{max v u} (∀ j, F.obj j) :=
   -- Porting note : if `f` and `g` were inlined, it does not compile
@@ -68,7 +68,7 @@ instance limitSemiring (F : J ⥤ SemiRingCatMax.{v, u}) :
 set_option linter.uppercaseLean3 false in
 #align SemiRing.limit_semiring SemiRingCat.limitSemiring
 
-/-- `limit.π (F ⋙ forget SemiRing) j` as a `ring_hom`. -/
+/-- `limit.π (F ⋙ forget SemiRingCat) j` as a `RingHom`. -/
 def limitπRingHom (F : J ⥤ SemiRingCatMax.{v, u}) (j) :
     (Types.limitCone.{v, u} (F ⋙ forget SemiRingCat)).pt →+* (F ⋙ forget SemiRingCat).obj j :=
   -- Porting note : if `f` and `g` were inlined, it does not compile
@@ -82,10 +82,10 @@ set_option linter.uppercaseLean3 false in
 
 namespace HasLimits
 
--- The next two definitions are used in the construction of `has_limits SemiRing`.
+-- The next two definitions are used in the construction of `HasLimits SemiRingCat`.
 -- After that, the limits should be constructed using the generic limits API,
--- e.g. `limit F`, `limit.cone F`, and `limit.is_limit F`.
-/-- Construction of a limit cone in `SemiRing`.
+-- e.g. `limit F`, `limit.cone F`, and `limit.isLimit F`.
+/-- Construction of a limit cone in `SemiRingCat`.
 (Internal use only; use the limits API.)
 -/
 def limitCone (F : J ⥤ SemiRingCatMax.{v, u}) : Cone F where
@@ -97,7 +97,7 @@ def limitCone (F : J ⥤ SemiRingCatMax.{v, u}) : Cone F where
 set_option linter.uppercaseLean3 false in
 #align SemiRing.has_limits.limit_cone SemiRingCat.HasLimits.limitCone
 
-/-- Witness that the limit cone in `SemiRing` is a limit cone.
+/-- Witness that the limit cone in `SemiRingCat` is a limit cone.
 (Internal use only; use the limits API.)
 -/
 def limitConeIsLimit (F : J ⥤ SemiRingCatMax.{v, u}) : IsLimit (limitCone F) := by
@@ -139,8 +139,8 @@ set_option linter.uppercaseLean3 false in
 /-- The forgetful functor from semirings to additive commutative monoids preserves all limits.
 -/
 instance forget₂AddCommMonPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ SemiRingCat AddCommMonCat.{max v u})
-    where preservesLimitsOfShape {_ _} :=
+    PreservesLimitsOfSize.{v, v} (forget₂ SemiRingCat AddCommMonCat.{max v u}) where
+  preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit.{v, u} F)
           (forget₂AddCommMonPreservesLimitsAux F) }
@@ -164,8 +164,8 @@ set_option linter.uppercaseLean3 false in
 /-- The forgetful functor from semirings to monoids preserves all limits.
 -/
 instance forget₂MonPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ SemiRingCat MonCat.{max v u})
-    where preservesLimitsOfShape {_ _} :=
+    PreservesLimitsOfSize.{v, v} (forget₂ SemiRingCat MonCat.{max v u}) where
+  preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit F)
           (forget₂MonPreservesLimitsAux.{v, u} F) }
@@ -179,8 +179,9 @@ set_option linter.uppercaseLean3 false in
 
 /-- The forgetful functor from semirings to types preserves all limits.
 -/
-instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget SemiRingCat.{max v u})
-    where preservesLimitsOfShape {_ _} :=
+instance forgetPreservesLimitsOfSize :
+    PreservesLimitsOfSize.{v, v} (forget SemiRingCat.{max v u}) where
+  preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit F)
           (Types.limitConeIsLimit.{v, u} (F ⋙ forget _)) }
@@ -217,15 +218,15 @@ instance limitCommSemiring (F : J ⥤ CommSemiRingCatMax.{v, u}) :
 set_option linter.uppercaseLean3 false in
 #align CommSemiRing.limit_comm_semiring CommSemiRingCat.limitCommSemiring
 
-/-- We show that the forgetful functor `CommSemiRing ⥤ SemiRing` creates limits.
+/-- We show that the forgetful functor `CommSemiRingCat ⥤ SemiRingCat` creates limits.
 
-All we need to do is notice that the limit point has a `comm_semiring` instance available,
+All we need to do is notice that the limit point has a `CommSemiring` instance available,
 and then reuse the existing limit.
 -/
 instance (F : J ⥤ CommSemiRingCatMax.{v, u}) :
     CreatesLimit F (forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u}) :=
-  -- Porting note : `CommSemiRing ⥤ Type` reflecting isomorphism is needed to make Lean see that
-  -- `CommSemiRingCat ⥤ SemiRingCat` reflects isomorphism. `CommSemiRing ⥤ Type` reflecting
+  -- Porting note : `CommSemiRingCat ⥤ Type` reflecting isomorphism is needed to make Lean see that
+  -- `CommSemiRingCat ⥤ SemiRingCat` reflects isomorphism. `CommSemiRingCat ⥤ Type` reflecting
   -- isomorphism is added manually since Lean can't see it, but even with this addition Lean can not
   -- see `CommSemiRingCat ⥤ SemiRingCat` reflects isomorphism, so this instance is also added.
   letI : ReflectsIsomorphisms (forget CommSemiRingCatMax.{v, u}) :=
@@ -253,7 +254,7 @@ instance (F : J ⥤ CommSemiRingCatMax.{v, u}) :
             fun x y => Subtype.ext <| funext fun j => by exact (s.π.app j).map_add x y⟩)
           fun s => rfl }
 
-/-- A choice of limit cone for a functor into `CommSemiRing`.
+/-- A choice of limit cone for a functor into `CommSemiRingCat`.
 (Generally, you'll just want to use `limit F`.)
 -/
 def limitCone (F : J ⥤ CommSemiRingCatMax.{v, u}) : Cone F :=
@@ -272,8 +273,7 @@ set_option linter.uppercaseLean3 false in
 /- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
 /-- The category of rings has all limits. -/
 instance hasLimitsOfSize : HasLimitsOfSize.{v, v} CommSemiRingCatMax.{v, u} :=
-  {
-    has_limits_of_shape := fun _ _ =>
+  { has_limits_of_shape := fun _ _ =>
       { has_limit := fun F =>
           hasLimit_of_created F (forget₂ CommSemiRingCat SemiRingCatMax.{v, u}) } }
 set_option linter.uppercaseLean3 false in
@@ -287,8 +287,8 @@ set_option linter.uppercaseLean3 false in
 /-- The forgetful functor from rings to semirings preserves all limits.
 -/
 instance forget₂SemiRingPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ CommSemiRingCat SemiRingCat.{max v u})
-    where preservesLimitsOfShape {_ _} :=
+    PreservesLimitsOfSize.{v, v} (forget₂ CommSemiRingCat SemiRingCat.{max v u}) where
+  preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit.{v, u} F)
           (SemiRingCat.HasLimits.limitConeIsLimit _) }
@@ -305,8 +305,8 @@ set_option linter.uppercaseLean3 false in
 types could have been computed instead as limits in the category of types.)
 -/
 instance forgetPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget CommSemiRingCatMax.{v, u})
-    where preservesLimitsOfShape {_ _} :=
+    PreservesLimitsOfSize.{v, v} (forget CommSemiRingCatMax.{v, u}) where
+  preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit.{v, u} F)
           (Types.limitConeIsLimit.{v, u} _) }
@@ -321,7 +321,7 @@ set_option linter.uppercaseLean3 false in
 end CommSemiRingCat
 
 -- Porting note: typemax hack to fix universe complaints
-/-- An alias for `Ring.{max u v}`, to deal around unification issues. -/
+/-- An alias for `RingCat.{max u v}`, to deal around unification issues. -/
 @[nolint checkUnivs]
 abbrev RingCatMax.{u1, u2} := RingCat.{max u1 u2}
 
@@ -335,7 +335,7 @@ instance ringObj (F : J ⥤ RingCatMax.{v, u}) (j) : Ring ((F ⋙ forget RingCat
 set_option linter.uppercaseLean3 false in
 #align Ring.ring_obj RingCat.ringObj
 
-/-- The flat sections of a functor into `Ring` form a subring of all sections.
+/-- The flat sections of a functor into `RingCat` form a subring of all sections.
 -/
 def sectionsSubring (F : J ⥤ RingCatMax.{v, u}) : Subring.{max v u} (∀ j, F.obj j) :=
   letI f : J ⥤ AddGroupCat.{max v u} :=
@@ -354,13 +354,13 @@ instance limitRing (F : J ⥤ RingCatMax.{v, u}) :
 set_option linter.uppercaseLean3 false in
 #align Ring.limit_ring RingCat.limitRing
 
-/-- We show that the forgetful functor `CommRing ⥤ Ring` creates limits.
+/-- We show that the forgetful functor `CommRingCat ⥤ RingCat` creates limits.
 
-All we need to do is notice that the limit point has a `ring` instance available,
+All we need to do is notice that the limit point has a `Ring` instance available,
 and then reuse the existing limit.
 -/
 instance (F : J ⥤ RingCatMax.{v, u}) :
-  CreatesLimit F (forget₂ RingCatMax.{v, u} SemiRingCatMax.{v, u}) :=
+    CreatesLimit F (forget₂ RingCatMax.{v, u} SemiRingCatMax.{v, u}) :=
   letI : ReflectsIsomorphisms (forget₂ RingCatMax SemiRingCatMax) :=
     CategoryTheory.reflectsIsomorphisms_forget₂ _ _
   letI c : Cone F :=
@@ -376,7 +376,7 @@ instance (F : J ⥤ RingCatMax.{v, u}) :
         IsLimit.ofFaithful (forget₂ RingCat SemiRingCat.{max v u})
           (by apply SemiRingCat.HasLimits.limitConeIsLimit _) (fun s => _) fun s => rfl }
 
-/-- A choice of limit cone for a functor into `Ring`.
+/-- A choice of limit cone for a functor into `RingCat`.
 (Generally, you'll just want to use `limit F`.)
 -/
 def limitCone (F : J ⥤ RingCatMax.{v, u}) : Cone F :=
@@ -409,8 +409,8 @@ set_option linter.uppercaseLean3 false in
 /-- The forgetful functor from rings to semirings preserves all limits.
 -/
 instance forget₂SemiRingPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ RingCat SemiRingCat.{max v u})
-    where preservesLimitsOfShape {_ _} :=
+    PreservesLimitsOfSize.{v, v} (forget₂ RingCat SemiRingCat.{max v u}) where
+  preservesLimitsOfShape {_ _} :=
       { preservesLimit := fun {F} =>
           preservesLimitOfPreservesLimitCone (limitConeIsLimit.{v, u} F)
             (SemiRingCat.HasLimits.limitConeIsLimit.{v, u} _) }
@@ -435,8 +435,8 @@ set_option linter.uppercaseLean3 false in
 /-- The forgetful functor from rings to additive commutative groups preserves all limits.
 -/
 instance forget₂AddCommGroupPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ RingCatMax.{v, u} AddCommGroupCat.{max v u})
-    where preservesLimitsOfShape {_ _} :=
+    PreservesLimitsOfSize.{v, v} (forget₂ RingCatMax.{v, u} AddCommGroupCat.{max v u}) where
+  preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit.{v, u} F)
           (forget₂AddCommGroupPreservesLimitsAux F) }
@@ -452,8 +452,8 @@ set_option linter.uppercaseLean3 false in
 /-- The forgetful functor from rings to types preserves all limits. (That is, the underlying
 types could have been computed instead as limits in the category of types.)
 -/
-instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget RingCatMax.{v, u})
-    where preservesLimitsOfShape {_ _} :=
+instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget RingCatMax.{v, u}) where
+  preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit.{v, u} F)
           (Types.limitConeIsLimit.{v, u} _) }
@@ -468,7 +468,7 @@ set_option linter.uppercaseLean3 false in
 end RingCat
 
 -- Porting note: typemax hack to fix universe complaints
-/-- An alias for `CommRing.{max u v}`, to deal around unification issues. -/
+/-- An alias for `CommRingCat.{max u v}`, to deal around unification issues. -/
 @[nolint checkUnivs]
 abbrev CommRingCatMax.{u1, u2} := CommRingCat.{max u1 u2}
 
@@ -490,9 +490,9 @@ instance limitCommRing (F : J ⥤ CommRingCatMax.{v, u}) :
 set_option linter.uppercaseLean3 false in
 #align CommRing.limit_comm_ring CommRingCat.limitCommRing
 
-/-- We show that the forgetful functor `CommRing ⥤ Ring` creates limits.
+/-- We show that the forgetful functor `CommRingCat ⥤ RingCat` creates limits.
 
-All we need to do is notice that the limit point has a `comm_ring` instance available,
+All we need to do is notice that the limit point has a `CommRing` instance available,
 and then reuse the existing limit.
 -/
 instance (F : J ⥤ CommRingCatMax.{v, u}) :
@@ -500,7 +500,7 @@ instance (F : J ⥤ CommRingCatMax.{v, u}) :
   /-
     A terse solution here would be
     ```
-    creates_limit_of_fully_faithful_of_iso (CommRing.of (limit (F ⋙ forget _))) (iso.refl _)
+    createsLimitOfFullyFaithfulOfIso (CommRingCat.of (limit (F ⋙ forget _))) (Iso.refl _)
     ```
     but it seems this would introduce additional identity morphisms in `limit.π`.
     -/
@@ -531,7 +531,7 @@ instance (F : J ⥤ CommRingCatMax.{v, u}) :
                 (F ⋙ forget₂ CommRingCatMax.{v, u} RingCatMax.{v, u})).lift
                 ((forget₂ _ RingCatMax.{v, u}).mapCone s)) fun _ => rfl }
 
-/-- A choice of limit cone for a functor into `CommRing`.
+/-- A choice of limit cone for a functor into `CommRingCat`.
 (Generally, you'll just want to use `limit F`.)
 -/
 def limitCone (F : J ⥤ CommRingCatMax.{v, u}) : Cone F :=
@@ -569,8 +569,8 @@ set_option linter.uppercaseLean3 false in
 (That is, the underlying rings could have been computed instead as limits in the category of rings.)
 -/
 instance forget₂RingPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ CommRingCat RingCat.{max v u})
-    where preservesLimitsOfShape {_ _} :=
+    PreservesLimitsOfSize.{v, v} (forget₂ CommRingCat RingCat.{max v u}) where
+  preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone.{v, v} (limitConeIsLimit.{v, u} F)
           (RingCat.limitConeIsLimit.{v, u} _) }
@@ -595,8 +595,8 @@ set_option linter.uppercaseLean3 false in
 in the category of commutative semirings.)
 -/
 instance forget₂CommSemiRingPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget₂ CommRingCat CommSemiRingCat.{max v u})
-    where preservesLimitsOfShape {_ _} :=
+    PreservesLimitsOfSize.{v, v} (forget₂ CommRingCat CommSemiRingCat.{max v u}) where
+  preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone (limitConeIsLimit.{v, u} F)
           (forget₂CommSemiRingPreservesLimitsAux.{v, u} F) }
@@ -612,8 +612,9 @@ set_option linter.uppercaseLean3 false in
 /-- The forgetful functor from commutative rings to types preserves all limits.
 (That is, the underlying types could have been computed instead as limits in the category of types.)
 -/
-instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget CommRingCat.{max v u})
-    where preservesLimitsOfShape {_ _} :=
+instance forgetPreservesLimitsOfSize :
+    PreservesLimitsOfSize.{v, v} (forget CommRingCat.{max v u}) where
+  preservesLimitsOfShape {_ _} :=
     { preservesLimit := fun {F} =>
         preservesLimitOfPreservesLimitCone.{v, v} (limitConeIsLimit.{v, u} F)
           (Types.limitConeIsLimit.{v, u} _) }
feat: change ConcreteCategory.hasCoeToFun to FunLike (#4693)
Diff
@@ -229,14 +229,14 @@ instance (F : J ⥤ CommSemiRingCatMax.{v, u}) :
   -- isomorphism is added manually since Lean can't see it, but even with this addition Lean can not
   -- see `CommSemiRingCat ⥤ SemiRingCat` reflects isomorphism, so this instance is also added.
   letI : ReflectsIsomorphisms (forget CommSemiRingCatMax.{v, u}) :=
-    CommSemiRing.forgetReflectIsos.{max v u}
+    CommSemiRingCat.forgetReflectIsos.{max v u}
   letI : ReflectsIsomorphisms
     (forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u}) :=
     CategoryTheory.reflectsIsomorphisms_forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u}
   let c : Cone F :=
-    { pt := CommSemiRing.of (Types.limitCone (F ⋙ forget _)).pt
+    { pt := CommSemiRingCat.of (Types.limitCone (F ⋙ forget _)).pt
       π :=
-        { app := fun j => CommSemiRing.ofHom <| SemiRingCat.limitπRingHom.{v, u} (J := J)
+        { app := fun j => CommSemiRingCat.ofHom <| SemiRingCat.limitπRingHom.{v, u} (J := J)
             (F ⋙ forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u}) j
           naturality := (SemiRingCat.HasLimits.limitCone.{v, u}
             (F ⋙ forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u})).π.naturality } }
@@ -246,7 +246,7 @@ instance (F : J ⥤ CommSemiRingCatMax.{v, u}) :
       makesLimit := by
         refine IsLimit.ofFaithful (forget₂ CommSemiRingCatMax.{v, u} SemiRingCatMax.{v, u})
           (SemiRingCat.HasLimits.limitConeIsLimit.{v, u} _)
-          (fun s : Cone F => CommSemiRing.ofHom
+          (fun s : Cone F => CommSemiRingCat.ofHom
             ⟨⟨⟨_, Subtype.ext <| funext fun j => by exact (s.π.app j).map_one⟩,
             fun x y => Subtype.ext <| funext fun j => by exact (s.π.app j).map_mul x y⟩,
             Subtype.ext <| funext fun j => by exact (s.π.app j).map_zero,
chore: formatting issues (#4947)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -52,13 +52,13 @@ set_option linter.uppercaseLean3 false in
 /-- The flat sections of a functor into `SemiRing` form a subsemiring of all sections.
 -/
 def sectionsSubsemiring (F : J ⥤ SemiRingCatMax.{v, u}) : Subsemiring.{max v u} (∀ j, F.obj j) :=
--- Porting note : if `f` and `g` were inlined, it does not compile
-letI f : J ⥤ AddMonCat.{max v u} := F ⋙ forget₂ SemiRingCatMax.{v, u} AddCommMonCat.{max v u} ⋙
-  forget₂ AddCommMonCat AddMonCat
-letI g : J ⥤ MonCat.{max v u} := F ⋙ forget₂ SemiRingCatMax.{v, u} MonCat.{max v u}
-{ (MonCat.sectionsSubmonoid.{v, u} (J := J) g),
-  (AddMonCat.sectionsAddSubmonoid.{v, u} (J := J) f) with
-  carrier := (F ⋙ forget SemiRingCat).sections }
+  -- Porting note : if `f` and `g` were inlined, it does not compile
+  letI f : J ⥤ AddMonCat.{max v u} := F ⋙ forget₂ SemiRingCatMax.{v, u} AddCommMonCat.{max v u} ⋙
+    forget₂ AddCommMonCat AddMonCat
+  letI g : J ⥤ MonCat.{max v u} := F ⋙ forget₂ SemiRingCatMax.{v, u} MonCat.{max v u}
+  { (MonCat.sectionsSubmonoid.{v, u} (J := J) g),
+    (AddMonCat.sectionsAddSubmonoid.{v, u} (J := J) f) with
+    carrier := (F ⋙ forget SemiRingCat).sections }
 set_option linter.uppercaseLean3 false in
 #align SemiRing.sections_subsemiring SemiRingCat.sectionsSubsemiring
 
@@ -72,7 +72,7 @@ set_option linter.uppercaseLean3 false in
 def limitπRingHom (F : J ⥤ SemiRingCatMax.{v, u}) (j) :
     (Types.limitCone.{v, u} (F ⋙ forget SemiRingCat)).pt →+* (F ⋙ forget SemiRingCat).obj j :=
   -- Porting note : if `f` and `g` were inlined, it does not compile
-  letI f : J ⥤ AddMonCat.{max v u}:= F ⋙ forget₂ SemiRingCatMax.{v, u} AddCommMonCat.{max v u} ⋙
+  letI f : J ⥤ AddMonCat.{max v u} := F ⋙ forget₂ SemiRingCatMax.{v, u} AddCommMonCat.{max v u} ⋙
     forget₂ AddCommMonCat AddMonCat
   { AddMonCat.limitπAddMonoidHom f j,
     MonCat.limitπMonoidHom (F ⋙ forget₂ SemiRingCat MonCat.{max v u}) j with
feat: port Algebra.Category.Ring.Limits (#4235)

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

Dependencies 8 + 380

381 files ported (97.9%)
151110 lines ported (98.0%)
Show graph

The unported dependencies are