algebra.category.Module.limitsMathlib.Algebra.Category.ModuleCat.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
@@ -3,8 +3,8 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 -/
-import Algebra.Category.Module.Basic
-import Algebra.Category.Group.Limits
+import Algebra.Category.ModuleCat.Basic
+import Algebra.Category.GroupCat.Limits
 import Algebra.DirectLimit
 
 #align_import algebra.category.Module.limits from "leanprover-community/mathlib"@"a87d22575d946e1e156fc1edd1e1269600a8a282"
Diff
@@ -63,7 +63,7 @@ def sectionsSubmodule (F : J ⥤ ModuleCat.{max v w} R) : Submodule R (∀ j, F.
     smul_mem' := fun r s sh j j' f =>
       by
       simp only [forget_map_eq_coe, functor.comp_map, Pi.smul_apply, LinearMap.map_smul]
-      dsimp [functor.sections] at sh 
+      dsimp [functor.sections] at sh
       rw [sh f] }
 #align Module.sections_submodule ModuleCat.sectionsSubmodule
 -/
Diff
@@ -141,7 +141,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 ModuleCat.hasLimitsOfSize /-
 /-- The category of R-modules has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} (ModuleCat.{max v w} R) :=
Diff
@@ -141,7 +141,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 ModuleCat.hasLimitsOfSize /-
 /-- The category of R-modules has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} (ModuleCat.{max v w} R) :=
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 -/
-import Mathbin.Algebra.Category.Module.Basic
-import Mathbin.Algebra.Category.Group.Limits
-import Mathbin.Algebra.DirectLimit
+import Algebra.Category.Module.Basic
+import Algebra.Category.Group.Limits
+import Algebra.DirectLimit
 
 #align_import algebra.category.Module.limits from "leanprover-community/mathlib"@"a87d22575d946e1e156fc1edd1e1269600a8a282"
 
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2020 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.Module.limits
-! leanprover-community/mathlib commit a87d22575d946e1e156fc1edd1e1269600a8a282
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.Category.Module.Basic
 import Mathbin.Algebra.Category.Group.Limits
 import Mathbin.Algebra.DirectLimit
 
+#align_import algebra.category.Module.limits from "leanprover-community/mathlib"@"a87d22575d946e1e156fc1edd1e1269600a8a282"
+
 /-!
 # The category of R-modules has all limits
 
Diff
@@ -38,15 +38,20 @@ variable {R : Type u} [Ring R]
 
 variable {J : Type v} [SmallCategory J]
 
+#print ModuleCat.addCommGroupObj /-
 instance addCommGroupObj (F : J ⥤ ModuleCat.{max v w} R) (j) :
     AddCommGroup ((F ⋙ forget (ModuleCat R)).obj j) := by change AddCommGroup (F.obj j);
   infer_instance
 #align Module.add_comm_group_obj ModuleCat.addCommGroupObj
+-/
 
+#print ModuleCat.moduleObj /-
 instance moduleObj (F : J ⥤ ModuleCat.{max v w} R) (j) :
     Module R ((F ⋙ forget (ModuleCat R)).obj j) := by change Module R (F.obj j); infer_instance
 #align Module.module_obj ModuleCat.moduleObj
+-/
 
+#print ModuleCat.sectionsSubmodule /-
 /-- The flat sections of a functor into `Module R` form a submodule of all sections.
 -/
 def sectionsSubmodule (F : J ⥤ ModuleCat.{max v w} R) : Submodule R (∀ j, F.obj j) :=
@@ -64,6 +69,7 @@ def sectionsSubmodule (F : J ⥤ ModuleCat.{max v w} R) : Submodule R (∀ j, F.
       dsimp [functor.sections] at sh 
       rw [sh f] }
 #align Module.sections_submodule ModuleCat.sectionsSubmodule
+-/
 
 #print ModuleCat.limitAddCommMonoid /-
 -- Adding the following instance speeds up `limit_module` noticeably,
@@ -88,6 +94,7 @@ instance limitModule (F : J ⥤ ModuleCat R) :
 #align Module.limit_module ModuleCat.limitModule
 -/
 
+#print ModuleCat.limitπLinearMap /-
 /-- `limit.π (F ⋙ forget Ring) j` as a `ring_hom`. -/
 def limitπLinearMap (F : J ⥤ ModuleCat R) (j) :
     (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).pt →ₗ[R] (F ⋙ forget (ModuleCat R)).obj j
@@ -96,6 +103,7 @@ def limitπLinearMap (F : J ⥤ ModuleCat R) (j) :
   map_smul' x y := rfl
   map_add' x y := rfl
 #align Module.limit_π_linear_map ModuleCat.limitπLinearMap
+-/
 
 namespace HasLimits
 
@@ -136,7 +144,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 ModuleCat.hasLimitsOfSize /-
 /-- The category of R-modules has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} (ModuleCat.{max v w} R) :=
@@ -156,12 +164,14 @@ instance hasLimits : HasLimits (ModuleCat.{w} R) :=
 #align Module.has_limits ModuleCat.hasLimits
 -/
 
+#print ModuleCat.forget₂AddCommGroupPreservesLimitsAux /-
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ ModuleCat.{max v w} R) :
     IsLimit ((forget₂ (ModuleCat R) AddCommGroupCat).mapCone (limitCone F)) :=
   AddCommGroupCat.limitConeIsLimit (F ⋙ forget₂ (ModuleCat R) AddCommGroupCat.{max v w})
 #align Module.forget₂_AddCommGroup_preserves_limits_aux ModuleCat.forget₂AddCommGroupPreservesLimitsAux
+-/
 
 #print ModuleCat.forget₂AddCommGroupPreservesLimitsOfSize /-
 /-- The forgetful functor from R-modules to abelian groups preserves all limits.
@@ -215,6 +225,7 @@ variable [∀ i, AddCommGroup (G i)] [∀ i, Module R (G i)]
 
 variable (f : ∀ i j, i ≤ j → G i →ₗ[R] G j) [DirectedSystem G fun i j h => f i j h]
 
+#print ModuleCat.directLimitDiagram /-
 /-- The diagram (in the sense of `category_theory`)
  of an unbundled `direct_limit` of modules. -/
 @[simps]
@@ -229,9 +240,11 @@ def directLimitDiagram : ι ⥤ ModuleCat R
     symm
     apply Module.DirectedSystem.map_map
 #align Module.direct_limit_diagram ModuleCat.directLimitDiagram
+-/
 
 variable [DecidableEq ι]
 
+#print ModuleCat.directLimitCocone /-
 /-- The `cocone` on `direct_limit_diagram` corresponding to
 the unbundled `direct_limit` of modules.
 
@@ -244,7 +257,9 @@ def directLimitCocone : Cocone (directLimitDiagram G f)
     { app := Module.DirectLimit.of R ι G f
       naturality' := fun i j hij => by apply LinearMap.ext; intro x; exact direct_limit.of_f }
 #align Module.direct_limit_cocone ModuleCat.directLimitCocone
+-/
 
+#print ModuleCat.directLimitIsColimit /-
 /-- The unbundled `direct_limit` of modules is a colimit
 in the sense of `category_theory`. -/
 @[simps]
@@ -267,6 +282,7 @@ def directLimitIsColimit [Nonempty ι] [IsDirected ι (· ≤ ·)] : IsColimit (
     simp only [this]
     apply Module.DirectLimit.lift_unique
 #align Module.direct_limit_is_colimit ModuleCat.directLimitIsColimit
+-/
 
 end DirectLimit
 
Diff
@@ -136,7 +136,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 ModuleCat.hasLimitsOfSize /-
 /-- The category of R-modules has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} (ModuleCat.{max v w} R) :=
Diff
@@ -61,7 +61,7 @@ def sectionsSubmodule (F : J ⥤ ModuleCat.{max v w} R) : Submodule R (∀ j, F.
     smul_mem' := fun r s sh j j' f =>
       by
       simp only [forget_map_eq_coe, functor.comp_map, Pi.smul_apply, LinearMap.map_smul]
-      dsimp [functor.sections] at sh
+      dsimp [functor.sections] at sh 
       rw [sh f] }
 #align Module.sections_submodule ModuleCat.sectionsSubmodule
 
Diff
@@ -38,30 +38,15 @@ variable {R : Type u} [Ring R]
 
 variable {J : Type v} [SmallCategory J]
 
-/- warning: Module.add_comm_group_obj -> ModuleCat.addCommGroupObj is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)) (j : J), AddCommGroup.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))) j)
-but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)) (j : J), AddCommGroup.{max u1 u2} (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (succ u1) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) Type.{max u1 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} CategoryTheory.types.{max u1 u2})) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max (max u3 (succ u1)) (succ u2), max (succ u1) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1)))) j)
-Case conversion may be inaccurate. Consider using '#align Module.add_comm_group_obj ModuleCat.addCommGroupObjₓ'. -/
 instance addCommGroupObj (F : J ⥤ ModuleCat.{max v w} R) (j) :
     AddCommGroup ((F ⋙ forget (ModuleCat R)).obj j) := by change AddCommGroup (F.obj j);
   infer_instance
 #align Module.add_comm_group_obj ModuleCat.addCommGroupObj
 
-/- warning: Module.module_obj -> ModuleCat.moduleObj is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)) (j : J), Module.{u3, max u1 u2} R (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))) j) (Ring.toSemiring.{u3} R _inst_1) (AddCommGroup.toAddCommMonoid.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))) j) (ModuleCat.addCommGroupObj.{u1, u2, u3} R _inst_1 J _inst_2 F j))
-but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)) (j : J), Module.{u3, max u1 u2} R (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (succ u1) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) Type.{max u1 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} CategoryTheory.types.{max u1 u2})) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max (max u3 (succ u1)) (succ u2), max (succ u1) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1)))) j) (Ring.toSemiring.{u3} R _inst_1) (AddCommGroup.toAddCommMonoid.{max u1 u2} (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (succ u1) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) Type.{max u1 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} CategoryTheory.types.{max u1 u2})) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max (max u3 (succ u1)) (succ u2), max (succ u1) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1)))) j) (ModuleCat.addCommGroupObj.{u1, u2, u3} R _inst_1 J _inst_2 F j))
-Case conversion may be inaccurate. Consider using '#align Module.module_obj ModuleCat.moduleObjₓ'. -/
 instance moduleObj (F : J ⥤ ModuleCat.{max v w} R) (j) :
     Module R ((F ⋙ forget (ModuleCat R)).obj j) := by change Module R (F.obj j); infer_instance
 #align Module.module_obj ModuleCat.moduleObj
 
-/- warning: Module.sections_submodule -> ModuleCat.sectionsSubmodule is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Module.sections_submodule ModuleCat.sectionsSubmoduleₓ'. -/
 /-- The flat sections of a functor into `Module R` form a submodule of all sections.
 -/
 def sectionsSubmodule (F : J ⥤ ModuleCat.{max v w} R) : Submodule R (∀ j, F.obj j) :=
@@ -103,12 +88,6 @@ instance limitModule (F : J ⥤ ModuleCat R) :
 #align Module.limit_module ModuleCat.limitModule
 -/
 
-/- warning: Module.limit_π_linear_map -> ModuleCat.limitπLinearMap is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)) (j : J), LinearMap.{u3, u3, max u1 u2, max u1 u2} R R (Ring.toSemiring.{u3} R _inst_1) (Ring.toSemiring.{u3} R _inst_1) (RingHom.id.{u3} R (Semiring.toNonAssocSemiring.{u3} R (Ring.toSemiring.{u3} R _inst_1))) (CategoryTheory.Limits.Cone.pt.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Limits.Types.limitCone.{u1, u2} J _inst_2 (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))))) (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))) j) (ModuleCat.limitAddCommMonoid.{u1, u2, u3} R _inst_1 J _inst_2 F) (AddCommGroup.toAddCommMonoid.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))) j) (ModuleCat.addCommGroupObj.{u1, u2, u3} R _inst_1 J _inst_2 F j)) (ModuleCat.limitModule.{u1, u2, u3} R _inst_1 J _inst_2 F) (ModuleCat.moduleObj.{u1, u2, u3} R _inst_1 J _inst_2 F j)
-but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)) (j : J), LinearMap.{u3, u3, max u1 u2, max u1 u2} R R (Ring.toSemiring.{u3} R _inst_1) (Ring.toSemiring.{u3} R _inst_1) (RingHom.id.{u3} R (Semiring.toNonAssocSemiring.{u3} R (Ring.toSemiring.{u3} R _inst_1))) (CategoryTheory.Limits.Cone.pt.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u2 u1, u1, max (max u3 (succ u1)) (succ u2), max (succ u2) (succ u1)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{max (max (succ u1) (succ u2)) u3, max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Limits.Types.limitCone.{u1, u2} J _inst_2 (CategoryTheory.Functor.comp.{u1, max u1 u2, max u2 u1, u1, max (max u3 (succ u1)) (succ u2), max (succ u2) (succ u1)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{max (max (succ u1) (succ u2)) u3, max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))))) (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (succ u1) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) Type.{max u1 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} CategoryTheory.types.{max u1 u2})) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max (max u3 (succ u1)) (succ u2), max (succ u1) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1)))) j) (ModuleCat.limitAddCommMonoid.{u1, u2, u3} R _inst_1 J _inst_2 F) (AddCommGroup.toAddCommMonoid.{max u1 u2} (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (succ u1) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) Type.{max u1 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} CategoryTheory.types.{max u1 u2})) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max (max u3 (succ u1)) (succ u2), max (succ u1) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1)))) j) (ModuleCat.addCommGroupObj.{u1, u2, u3} R _inst_1 J _inst_2 F j)) (ModuleCat.limitModule.{u1, u2, u3} R _inst_1 J _inst_2 F) (ModuleCat.moduleObj.{u1, u2, u3} R _inst_1 J _inst_2 F j)
-Case conversion may be inaccurate. Consider using '#align Module.limit_π_linear_map ModuleCat.limitπLinearMapₓ'. -/
 /-- `limit.π (F ⋙ forget Ring) j` as a `ring_hom`. -/
 def limitπLinearMap (F : J ⥤ ModuleCat R) (j) :
     (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).pt →ₗ[R] (F ⋙ forget (ModuleCat R)).obj j
@@ -177,12 +156,6 @@ instance hasLimits : HasLimits (ModuleCat.{w} R) :=
 #align Module.has_limits ModuleCat.hasLimits
 -/
 
-/- warning: Module.forget₂_AddCommGroup_preserves_limits_aux -> ModuleCat.forget₂AddCommGroupPreservesLimitsAux is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)), CategoryTheory.Limits.IsLimit.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 AddCommGroupCat.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{max u3 (succ (max u1 u2)), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1) AddCommGroupCat.largeCategory.{max u1 u2} AddCommGroupCat.concreteCategory.{max u1 u2} (ModuleCat.hasForgetToAddCommGroup.{u3, max u1 u2} R _inst_1))) (CategoryTheory.Functor.mapCone.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{max u3 (succ (max u1 u2)), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1) AddCommGroupCat.largeCategory.{max u1 u2} AddCommGroupCat.concreteCategory.{max u1 u2} (ModuleCat.hasForgetToAddCommGroup.{u3, max u1 u2} R _inst_1)) (ModuleCat.HasLimits.limitCone.{u1, u2, u3} R _inst_1 J _inst_2 F))
-but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)), CategoryTheory.Limits.IsLimit.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 AddCommGroupCat.{max u1 u2} instAddCommGroupCatLargeCategory.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} instAddCommGroupCatLargeCategory.{max u1 u2} F (CategoryTheory.forget₂.{max u3 (succ (max u1 u2)), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1) instAddCommGroupCatLargeCategory.{max u1 u2} AddCommGroupCat.concreteCategory.{max u1 u2} (ModuleCat.hasForgetToAddCommGroup.{u3, max u1 u2} R _inst_1))) (CategoryTheory.Functor.mapCone.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} instAddCommGroupCatLargeCategory.{max u1 u2} (CategoryTheory.forget₂.{max u3 (succ (max u1 u2)), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1) instAddCommGroupCatLargeCategory.{max u1 u2} AddCommGroupCat.concreteCategory.{max u1 u2} (ModuleCat.hasForgetToAddCommGroup.{u3, max u1 u2} R _inst_1)) F (ModuleCat.HasLimits.limitCone.{u1, u2, u3} R _inst_1 J _inst_2 F))
-Case conversion may be inaccurate. Consider using '#align Module.forget₂_AddCommGroup_preserves_limits_aux ModuleCat.forget₂AddCommGroupPreservesLimitsAuxₓ'. -/
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ ModuleCat.{max v w} R) :
@@ -242,12 +215,6 @@ variable [∀ i, AddCommGroup (G i)] [∀ i, Module R (G i)]
 
 variable (f : ∀ i j, i ≤ j → G i →ₗ[R] G j) [DirectedSystem G fun i j h => f i j h]
 
-/- warning: Module.direct_limit_diagram -> ModuleCat.directLimitDiagram is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {ι : Type.{u1}} [_inst_3 : Preorder.{u1} ι] (G : ι -> Type.{u1}) [_inst_4 : forall (i : ι), AddCommGroup.{u1} (G i)] [_inst_5 : forall (i : ι), Module.{u2, u1} R (G i) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i))] (f : forall (i : ι) (j : ι), (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_3) i j) -> (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j))) [_inst_6 : DirectedSystem.{u1, u1} ι _inst_3 G (fun (i : ι) (j : ι) (h : LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_3) i j) => coeFn.{succ u1, succ u1} (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) (fun (_x : LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) => (G i) -> (G j)) (LinearMap.hasCoeToFun.{u2, u2, u1, u1} R R (G i) (G j) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)))) (f i j h))], CategoryTheory.Functor.{u1, u1, u1, max u2 (succ u1)} ι (Preorder.smallCategory.{u1} ι _inst_3) (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1)
-but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {ι : Type.{u1}} [_inst_3 : Preorder.{u1} ι] (G : ι -> Type.{u1}) [_inst_4 : forall (i : ι), AddCommGroup.{u1} (G i)] [_inst_5 : forall (i : ι), Module.{u2, u1} R (G i) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i))] (f : forall (i : ι) (j : ι), (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_3) i j) -> (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j))) [_inst_6 : DirectedSystem.{u1, u1} ι _inst_3 G (fun (i : ι) (j : ι) (h : LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_3) i j) => FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) (G i) (fun (_x : G i) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : G i) => G j) _x) (LinearMap.instFunLikeLinearMap.{u2, u2, u1, u1} R R (G i) (G j) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)))) (f i j h))], CategoryTheory.Functor.{u1, u1, u1, max u2 (succ u1)} ι (Preorder.smallCategory.{u1} ι _inst_3) (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1)
-Case conversion may be inaccurate. Consider using '#align Module.direct_limit_diagram ModuleCat.directLimitDiagramₓ'. -/
 /-- The diagram (in the sense of `category_theory`)
  of an unbundled `direct_limit` of modules. -/
 @[simps]
@@ -265,12 +232,6 @@ def directLimitDiagram : ι ⥤ ModuleCat R
 
 variable [DecidableEq ι]
 
-/- warning: Module.direct_limit_cocone -> ModuleCat.directLimitCocone is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {ι : Type.{u1}} [_inst_3 : Preorder.{u1} ι] (G : ι -> Type.{u1}) [_inst_4 : forall (i : ι), AddCommGroup.{u1} (G i)] [_inst_5 : forall (i : ι), Module.{u2, u1} R (G i) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i))] (f : forall (i : ι) (j : ι), (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_3) i j) -> (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j))) [_inst_6 : DirectedSystem.{u1, u1} ι _inst_3 G (fun (i : ι) (j : ι) (h : LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_3) i j) => coeFn.{succ u1, succ u1} (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) (fun (_x : LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) => (G i) -> (G j)) (LinearMap.hasCoeToFun.{u2, u2, u1, u1} R R (G i) (G j) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)))) (f i j h))] [_inst_7 : DecidableEq.{succ u1} ι], CategoryTheory.Limits.Cocone.{u1, u1, u1, max u2 (succ u1)} ι (Preorder.smallCategory.{u1} ι _inst_3) (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) (ModuleCat.directLimitDiagram.{u1, u2} R _inst_1 ι _inst_3 G (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_5 i) f _inst_6)
-but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {ι : Type.{u1}} [_inst_3 : Preorder.{u1} ι] (G : ι -> Type.{u1}) [_inst_4 : forall (i : ι), AddCommGroup.{u1} (G i)] [_inst_5 : forall (i : ι), Module.{u2, u1} R (G i) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i))] (f : forall (i : ι) (j : ι), (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_3) i j) -> (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j))) [_inst_6 : DirectedSystem.{u1, u1} ι _inst_3 G (fun (i : ι) (j : ι) (h : LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_3) i j) => FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) (G i) (fun (_x : G i) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : G i) => G j) _x) (LinearMap.instFunLikeLinearMap.{u2, u2, u1, u1} R R (G i) (G j) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)))) (f i j h))] [_inst_7 : DecidableEq.{succ u1} ι], CategoryTheory.Limits.Cocone.{u1, u1, u1, max u2 (succ u1)} ι (Preorder.smallCategory.{u1} ι _inst_3) (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) (ModuleCat.directLimitDiagram.{u1, u2} R _inst_1 ι _inst_3 G (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_5 i) f _inst_6)
-Case conversion may be inaccurate. Consider using '#align Module.direct_limit_cocone ModuleCat.directLimitCoconeₓ'. -/
 /-- The `cocone` on `direct_limit_diagram` corresponding to
 the unbundled `direct_limit` of modules.
 
@@ -284,12 +245,6 @@ def directLimitCocone : Cocone (directLimitDiagram G f)
       naturality' := fun i j hij => by apply LinearMap.ext; intro x; exact direct_limit.of_f }
 #align Module.direct_limit_cocone ModuleCat.directLimitCocone
 
-/- warning: Module.direct_limit_is_colimit -> ModuleCat.directLimitIsColimit is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {ι : Type.{u1}} [_inst_3 : Preorder.{u1} ι] (G : ι -> Type.{u1}) [_inst_4 : forall (i : ι), AddCommGroup.{u1} (G i)] [_inst_5 : forall (i : ι), Module.{u2, u1} R (G i) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i))] (f : forall (i : ι) (j : ι), (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_3) i j) -> (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j))) [_inst_6 : DirectedSystem.{u1, u1} ι _inst_3 G (fun (i : ι) (j : ι) (h : LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_3) i j) => coeFn.{succ u1, succ u1} (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) (fun (_x : LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) => (G i) -> (G j)) (LinearMap.hasCoeToFun.{u2, u2, u1, u1} R R (G i) (G j) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)))) (f i j h))] [_inst_7 : DecidableEq.{succ u1} ι] [_inst_8 : Nonempty.{succ u1} ι] [_inst_9 : IsDirected.{u1} ι (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_3))], CategoryTheory.Limits.IsColimit.{u1, u1, u1, max u2 (succ u1)} ι (Preorder.smallCategory.{u1} ι _inst_3) (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) (ModuleCat.directLimitDiagram.{u1, u2} R _inst_1 ι _inst_3 G (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_5 i) f _inst_6) (ModuleCat.directLimitCocone.{u1, u2} R _inst_1 ι _inst_3 G (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_5 i) f _inst_6 (fun (a : ι) (b : ι) => _inst_7 a b))
-but is expected to have type
-  forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {ι : Type.{u1}} [_inst_3 : Preorder.{u1} ι] (G : ι -> Type.{u1}) [_inst_4 : forall (i : ι), AddCommGroup.{u1} (G i)] [_inst_5 : forall (i : ι), Module.{u2, u1} R (G i) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i))] (f : forall (i : ι) (j : ι), (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_3) i j) -> (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j))) [_inst_6 : DirectedSystem.{u1, u1} ι _inst_3 G (fun (i : ι) (j : ι) (h : LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_3) i j) => FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) (G i) (fun (_x : G i) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : G i) => G j) _x) (LinearMap.instFunLikeLinearMap.{u2, u2, u1, u1} R R (G i) (G j) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)))) (f i j h))] [_inst_7 : DecidableEq.{succ u1} ι] [_inst_8 : Nonempty.{succ u1} ι] [_inst_9 : IsDirected.{u1} ι (fun (x._@.Mathlib.Algebra.Category.ModuleCat.Limits._hyg.1595 : ι) (x._@.Mathlib.Algebra.Category.ModuleCat.Limits._hyg.1597 : ι) => LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_3) x._@.Mathlib.Algebra.Category.ModuleCat.Limits._hyg.1595 x._@.Mathlib.Algebra.Category.ModuleCat.Limits._hyg.1597)], CategoryTheory.Limits.IsColimit.{u1, u1, u1, max u2 (succ u1)} ι (Preorder.smallCategory.{u1} ι _inst_3) (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) (ModuleCat.directLimitDiagram.{u1, u2} R _inst_1 ι _inst_3 G (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_5 i) f _inst_6) (ModuleCat.directLimitCocone.{u1, u2} R _inst_1 ι _inst_3 G (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_5 i) f _inst_6 (fun (a : ι) (b : ι) => _inst_7 a b))
-Case conversion may be inaccurate. Consider using '#align Module.direct_limit_is_colimit ModuleCat.directLimitIsColimitₓ'. -/
 /-- The unbundled `direct_limit` of modules is a colimit
 in the sense of `category_theory`. -/
 @[simps]
Diff
@@ -45,9 +45,7 @@ but is expected to have type
   forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)) (j : J), AddCommGroup.{max u1 u2} (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (succ u1) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) Type.{max u1 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} CategoryTheory.types.{max u1 u2})) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max (max u3 (succ u1)) (succ u2), max (succ u1) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1)))) j)
 Case conversion may be inaccurate. Consider using '#align Module.add_comm_group_obj ModuleCat.addCommGroupObjₓ'. -/
 instance addCommGroupObj (F : J ⥤ ModuleCat.{max v w} R) (j) :
-    AddCommGroup ((F ⋙ forget (ModuleCat R)).obj j) :=
-  by
-  change AddCommGroup (F.obj j)
+    AddCommGroup ((F ⋙ forget (ModuleCat R)).obj j) := by change AddCommGroup (F.obj j);
   infer_instance
 #align Module.add_comm_group_obj ModuleCat.addCommGroupObj
 
@@ -58,10 +56,7 @@ but is expected to have type
   forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)) (j : J), Module.{u3, max u1 u2} R (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (succ u1) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) Type.{max u1 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} CategoryTheory.types.{max u1 u2})) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max (max u3 (succ u1)) (succ u2), max (succ u1) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1)))) j) (Ring.toSemiring.{u3} R _inst_1) (AddCommGroup.toAddCommMonoid.{max u1 u2} (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (succ u1) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) Type.{max u1 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} CategoryTheory.types.{max u1 u2})) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max (max u3 (succ u1)) (succ u2), max (succ u1) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1)))) j) (ModuleCat.addCommGroupObj.{u1, u2, u3} R _inst_1 J _inst_2 F j))
 Case conversion may be inaccurate. Consider using '#align Module.module_obj ModuleCat.moduleObjₓ'. -/
 instance moduleObj (F : J ⥤ ModuleCat.{max v w} R) (j) :
-    Module R ((F ⋙ forget (ModuleCat R)).obj j) :=
-  by
-  change Module R (F.obj j)
-  infer_instance
+    Module R ((F ⋙ forget (ModuleCat R)).obj j) := by change Module R (F.obj j); infer_instance
 #align Module.module_obj ModuleCat.moduleObj
 
 /- warning: Module.sections_submodule -> ModuleCat.sectionsSubmodule is a dubious translation:
@@ -260,10 +255,7 @@ def directLimitDiagram : ι ⥤ ModuleCat R
     where
   obj i := ModuleCat.of R (G i)
   map i j hij := f i j hij.le
-  map_id' i := by
-    apply LinearMap.ext
-    intro x
-    apply Module.DirectedSystem.map_self
+  map_id' i := by apply LinearMap.ext; intro x; apply Module.DirectedSystem.map_self
   map_comp' i j k hij hjk := by
     apply LinearMap.ext
     intro x
@@ -289,10 +281,7 @@ def directLimitCocone : Cocone (directLimitDiagram G f)
   pt := ModuleCat.of R <| DirectLimit G f
   ι :=
     { app := Module.DirectLimit.of R ι G f
-      naturality' := fun i j hij => by
-        apply LinearMap.ext
-        intro x
-        exact direct_limit.of_f }
+      naturality' := fun i j hij => by apply LinearMap.ext; intro x; exact direct_limit.of_f }
 #align Module.direct_limit_cocone ModuleCat.directLimitCocone
 
 /- warning: Module.direct_limit_is_colimit -> ModuleCat.directLimitIsColimit is a dubious translation:
@@ -306,11 +295,7 @@ in the sense of `category_theory`. -/
 @[simps]
 def directLimitIsColimit [Nonempty ι] [IsDirected ι (· ≤ ·)] : IsColimit (directLimitCocone G f)
     where
-  desc s :=
-    DirectLimit.lift R ι G f s.ι.app fun i j h x =>
-      by
-      rw [← s.w (hom_of_le h)]
-      rfl
+  desc s := DirectLimit.lift R ι G f s.ι.app fun i j h x => by rw [← s.w (hom_of_le h)]; rfl
   fac s i := by
     apply LinearMap.ext
     intro x
@@ -321,10 +306,7 @@ def directLimitIsColimit [Nonempty ι] [IsDirected ι (· ≤ ·)] : IsColimit (
     have :
       s.ι.app = fun i =>
         LinearMap.comp m (direct_limit.of R ι (fun i => G i) (fun i j H => f i j H) i) :=
-      by
-      funext i
-      rw [← h]
-      rfl
+      by funext i; rw [← h]; rfl
     apply LinearMap.ext
     intro x
     simp only [this]
Diff
@@ -65,10 +65,7 @@ instance moduleObj (F : J ⥤ ModuleCat.{max v w} R) (j) :
 #align Module.module_obj ModuleCat.moduleObj
 
 /- warning: Module.sections_submodule -> ModuleCat.sectionsSubmodule is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)), Submodule.{u3, max u1 u2} R (forall (j : J), coeSort.{max (succ u3) (succ (succ (max u1 u2))), succ (succ (max u1 u2))} (ModuleCat.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} (ModuleCat.hasCoeToSort.{max u1 u2, u3} R _inst_1) (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F j)) (Ring.toSemiring.{u3} R _inst_1) (Pi.addCommMonoid.{u1, max u1 u2} J (fun (j : J) => coeSort.{max (succ u3) (succ (succ (max u1 u2))), succ (succ (max u1 u2))} (ModuleCat.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} (ModuleCat.hasCoeToSort.{max u1 u2, u3} R _inst_1) (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F j)) (fun (i : J) => AddCommGroup.toAddCommMonoid.{max u1 u2} (coeSort.{max (succ u3) (succ (succ (max u1 u2))), succ (succ (max u1 u2))} (ModuleCat.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} (ModuleCat.hasCoeToSort.{max u1 u2, u3} R _inst_1) (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F i)) (ModuleCat.isAddCommGroup.{max u1 u2, u3} R _inst_1 (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F i)))) (Pi.module.{u1, max u1 u2, u3} J (fun (j : J) => coeSort.{max (succ u3) (succ (succ (max u1 u2))), succ (succ (max u1 u2))} (ModuleCat.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} (ModuleCat.hasCoeToSort.{max u1 u2, u3} R _inst_1) (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F j)) R (Ring.toSemiring.{u3} R _inst_1) (fun (i : J) => AddCommGroup.toAddCommMonoid.{max u1 u2} (coeSort.{max (succ u3) (succ (succ (max u1 u2))), succ (succ (max u1 u2))} (ModuleCat.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} (ModuleCat.hasCoeToSort.{max u1 u2, u3} R _inst_1) (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F i)) (ModuleCat.isAddCommGroup.{max u1 u2, u3} R _inst_1 (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F i))) (fun (i : J) => ModuleCat.isModule.{max u1 u2, u3} R _inst_1 (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F i)))
-but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)), Submodule.{u3, max u1 u2} R (forall (j : J), ModuleCat.carrier.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) j)) (Ring.toSemiring.{u3} R _inst_1) (Pi.addCommMonoid.{u1, max u1 u2} J (fun (j : J) => ModuleCat.carrier.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) j)) (fun (i : J) => AddCommGroup.toAddCommMonoid.{max u1 u2} (ModuleCat.carrier.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) i)) (ModuleCat.isAddCommGroup.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) i)))) (Pi.module.{u1, max u1 u2, u3} J (fun (j : J) => ModuleCat.carrier.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) j)) R (Ring.toSemiring.{u3} R _inst_1) (fun (i : J) => AddCommGroup.toAddCommMonoid.{max u1 u2} (ModuleCat.carrier.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) i)) (ModuleCat.isAddCommGroup.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) i))) (fun (i : J) => ModuleCat.isModule.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) i)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align Module.sections_submodule ModuleCat.sectionsSubmoduleₓ'. -/
 /-- The flat sections of a functor into `Module R` form a submodule of all sections.
 -/
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.Module.limits
-! leanprover-community/mathlib commit c43486ecf2a5a17479a32ce09e4818924145e90e
+! leanprover-community/mathlib commit a87d22575d946e1e156fc1edd1e1269600a8a282
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.Algebra.DirectLimit
 /-!
 # The category of R-modules 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
@@ -35,6 +35,12 @@ variable {R : Type u} [Ring R]
 
 variable {J : Type v} [SmallCategory J]
 
+/- warning: Module.add_comm_group_obj -> ModuleCat.addCommGroupObj is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)) (j : J), AddCommGroup.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))) j)
+but is expected to have type
+  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)) (j : J), AddCommGroup.{max u1 u2} (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (succ u1) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) Type.{max u1 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} CategoryTheory.types.{max u1 u2})) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max (max u3 (succ u1)) (succ u2), max (succ u1) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1)))) j)
+Case conversion may be inaccurate. Consider using '#align Module.add_comm_group_obj ModuleCat.addCommGroupObjₓ'. -/
 instance addCommGroupObj (F : J ⥤ ModuleCat.{max v w} R) (j) :
     AddCommGroup ((F ⋙ forget (ModuleCat R)).obj j) :=
   by
@@ -42,6 +48,12 @@ instance addCommGroupObj (F : J ⥤ ModuleCat.{max v w} R) (j) :
   infer_instance
 #align Module.add_comm_group_obj ModuleCat.addCommGroupObj
 
+/- warning: Module.module_obj -> ModuleCat.moduleObj is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)) (j : J), Module.{u3, max u1 u2} R (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))) j) (Ring.toSemiring.{u3} R _inst_1) (AddCommGroup.toAddCommMonoid.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))) j) (ModuleCat.addCommGroupObj.{u1, u2, u3} R _inst_1 J _inst_2 F j))
+but is expected to have type
+  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)) (j : J), Module.{u3, max u1 u2} R (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (succ u1) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) Type.{max u1 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} CategoryTheory.types.{max u1 u2})) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max (max u3 (succ u1)) (succ u2), max (succ u1) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1)))) j) (Ring.toSemiring.{u3} R _inst_1) (AddCommGroup.toAddCommMonoid.{max u1 u2} (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (succ u1) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) Type.{max u1 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} CategoryTheory.types.{max u1 u2})) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max (max u3 (succ u1)) (succ u2), max (succ u1) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1)))) j) (ModuleCat.addCommGroupObj.{u1, u2, u3} R _inst_1 J _inst_2 F j))
+Case conversion may be inaccurate. Consider using '#align Module.module_obj ModuleCat.moduleObjₓ'. -/
 instance moduleObj (F : J ⥤ ModuleCat.{max v w} R) (j) :
     Module R ((F ⋙ forget (ModuleCat R)).obj j) :=
   by
@@ -49,6 +61,12 @@ instance moduleObj (F : J ⥤ ModuleCat.{max v w} R) (j) :
   infer_instance
 #align Module.module_obj ModuleCat.moduleObj
 
+/- warning: Module.sections_submodule -> ModuleCat.sectionsSubmodule is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)), Submodule.{u3, max u1 u2} R (forall (j : J), coeSort.{max (succ u3) (succ (succ (max u1 u2))), succ (succ (max u1 u2))} (ModuleCat.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} (ModuleCat.hasCoeToSort.{max u1 u2, u3} R _inst_1) (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F j)) (Ring.toSemiring.{u3} R _inst_1) (Pi.addCommMonoid.{u1, max u1 u2} J (fun (j : J) => coeSort.{max (succ u3) (succ (succ (max u1 u2))), succ (succ (max u1 u2))} (ModuleCat.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} (ModuleCat.hasCoeToSort.{max u1 u2, u3} R _inst_1) (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F j)) (fun (i : J) => AddCommGroup.toAddCommMonoid.{max u1 u2} (coeSort.{max (succ u3) (succ (succ (max u1 u2))), succ (succ (max u1 u2))} (ModuleCat.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} (ModuleCat.hasCoeToSort.{max u1 u2, u3} R _inst_1) (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F i)) (ModuleCat.isAddCommGroup.{max u1 u2, u3} R _inst_1 (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F i)))) (Pi.module.{u1, max u1 u2, u3} J (fun (j : J) => coeSort.{max (succ u3) (succ (succ (max u1 u2))), succ (succ (max u1 u2))} (ModuleCat.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} (ModuleCat.hasCoeToSort.{max u1 u2, u3} R _inst_1) (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F j)) R (Ring.toSemiring.{u3} R _inst_1) (fun (i : J) => AddCommGroup.toAddCommMonoid.{max u1 u2} (coeSort.{max (succ u3) (succ (succ (max u1 u2))), succ (succ (max u1 u2))} (ModuleCat.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} (ModuleCat.hasCoeToSort.{max u1 u2, u3} R _inst_1) (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F i)) (ModuleCat.isAddCommGroup.{max u1 u2, u3} R _inst_1 (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F i))) (fun (i : J) => ModuleCat.isModule.{max u1 u2, u3} R _inst_1 (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F i)))
+but is expected to have type
+  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)), Submodule.{u3, max u1 u2} R (forall (j : J), ModuleCat.carrier.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) j)) (Ring.toSemiring.{u3} R _inst_1) (Pi.addCommMonoid.{u1, max u1 u2} J (fun (j : J) => ModuleCat.carrier.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) j)) (fun (i : J) => AddCommGroup.toAddCommMonoid.{max u1 u2} (ModuleCat.carrier.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) i)) (ModuleCat.isAddCommGroup.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) i)))) (Pi.module.{u1, max u1 u2, u3} J (fun (j : J) => ModuleCat.carrier.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) j)) R (Ring.toSemiring.{u3} R _inst_1) (fun (i : J) => AddCommGroup.toAddCommMonoid.{max u1 u2} (ModuleCat.carrier.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) i)) (ModuleCat.isAddCommGroup.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) i))) (fun (i : J) => ModuleCat.isModule.{max u1 u2, u3} R _inst_1 (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (max u3 (succ u1)) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u3 (succ u1)) (succ u2)} (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) F) i)))
+Case conversion may be inaccurate. Consider using '#align Module.sections_submodule ModuleCat.sectionsSubmoduleₓ'. -/
 /-- The flat sections of a functor into `Module R` form a submodule of all sections.
 -/
 def sectionsSubmodule (F : J ⥤ ModuleCat.{max v w} R) : Submodule R (∀ j, F.obj j) :=
@@ -67,23 +85,35 @@ def sectionsSubmodule (F : J ⥤ ModuleCat.{max v w} R) : Submodule R (∀ j, F.
       rw [sh f] }
 #align Module.sections_submodule ModuleCat.sectionsSubmodule
 
+#print ModuleCat.limitAddCommMonoid /-
 -- Adding the following instance speeds up `limit_module` noticeably,
 -- by preventing a bad unfold of `limit_add_comm_group`.
 instance limitAddCommMonoid (F : J ⥤ ModuleCat R) :
     AddCommMonoid (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).pt :=
   show AddCommMonoid (sectionsSubmodule F) by infer_instance
 #align Module.limit_add_comm_monoid ModuleCat.limitAddCommMonoid
+-/
 
+#print ModuleCat.limitAddCommGroup /-
 instance limitAddCommGroup (F : J ⥤ ModuleCat R) :
     AddCommGroup (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).pt :=
   show AddCommGroup (sectionsSubmodule F) by infer_instance
 #align Module.limit_add_comm_group ModuleCat.limitAddCommGroup
+-/
 
+#print ModuleCat.limitModule /-
 instance limitModule (F : J ⥤ ModuleCat R) :
     Module R (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).pt :=
   show Module R (sectionsSubmodule F) by infer_instance
 #align Module.limit_module ModuleCat.limitModule
+-/
 
+/- warning: Module.limit_π_linear_map -> ModuleCat.limitπLinearMap is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)) (j : J), LinearMap.{u3, u3, max u1 u2, max u1 u2} R R (Ring.toSemiring.{u3} R _inst_1) (Ring.toSemiring.{u3} R _inst_1) (RingHom.id.{u3} R (Semiring.toNonAssocSemiring.{u3} R (Ring.toSemiring.{u3} R _inst_1))) (CategoryTheory.Limits.Cone.pt.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Limits.Types.limitCone.{u1, u2} J _inst_2 (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))))) (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))) j) (ModuleCat.limitAddCommMonoid.{u1, u2, u3} R _inst_1 J _inst_2 F) (AddCommGroup.toAddCommMonoid.{max u1 u2} (CategoryTheory.Functor.obj.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))) j) (ModuleCat.addCommGroupObj.{u1, u2, u3} R _inst_1 J _inst_2 F j)) (ModuleCat.limitModule.{u1, u2, u3} R _inst_1 J _inst_2 F) (ModuleCat.moduleObj.{u1, u2, u3} R _inst_1 J _inst_2 F j)
+but is expected to have type
+  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)) (j : J), LinearMap.{u3, u3, max u1 u2, max u1 u2} R R (Ring.toSemiring.{u3} R _inst_1) (Ring.toSemiring.{u3} R _inst_1) (RingHom.id.{u3} R (Semiring.toNonAssocSemiring.{u3} R (Ring.toSemiring.{u3} R _inst_1))) (CategoryTheory.Limits.Cone.pt.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u2 u1, u1, max (max u3 (succ u1)) (succ u2), max (succ u2) (succ u1)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{max (max (succ u1) (succ u2)) u3, max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))) (CategoryTheory.Limits.Types.limitCone.{u1, u2} J _inst_2 (CategoryTheory.Functor.comp.{u1, max u1 u2, max u2 u1, u1, max (max u3 (succ u1)) (succ u2), max (succ u2) (succ u1)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) TypeMax.{u1, u2} CategoryTheory.types.{max u2 u1} F (CategoryTheory.forget.{max (max (succ u1) (succ u2)) u3, max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1))))) (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (succ u1) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) Type.{max u1 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} CategoryTheory.types.{max u1 u2})) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max (max u3 (succ u1)) (succ u2), max (succ u1) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1)))) j) (ModuleCat.limitAddCommMonoid.{u1, u2, u3} R _inst_1 J _inst_2 F) (AddCommGroup.toAddCommMonoid.{max u1 u2} (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u1, max (succ u1) (succ u2)} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} J (CategoryTheory.Category.toCategoryStruct.{u1, u1} J _inst_2)) Type.{max u1 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (succ u1) (succ u2)} Type.{max u1 u2} CategoryTheory.types.{max u1 u2})) (CategoryTheory.Functor.toPrefunctor.{u1, max u1 u2, u1, max (succ u1) (succ u2)} J _inst_2 Type.{max u1 u2} CategoryTheory.types.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max (max u3 (succ u1)) (succ u2), max (succ u1) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) Type.{max u1 u2} CategoryTheory.types.{max u1 u2} F (CategoryTheory.forget.{max u3 (succ (max u1 u2)), max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1)))) j) (ModuleCat.addCommGroupObj.{u1, u2, u3} R _inst_1 J _inst_2 F j)) (ModuleCat.limitModule.{u1, u2, u3} R _inst_1 J _inst_2 F) (ModuleCat.moduleObj.{u1, u2, u3} R _inst_1 J _inst_2 F j)
+Case conversion may be inaccurate. Consider using '#align Module.limit_π_linear_map ModuleCat.limitπLinearMapₓ'. -/
 /-- `limit.π (F ⋙ forget Ring) j` as a `ring_hom`. -/
 def limitπLinearMap (F : J ⥤ ModuleCat R) (j) :
     (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).pt →ₗ[R] (F ⋙ forget (ModuleCat R)).obj j
@@ -95,6 +125,7 @@ def limitπLinearMap (F : J ⥤ ModuleCat R) (j) :
 
 namespace HasLimits
 
+#print ModuleCat.HasLimits.limitCone /-
 -- The next two definitions are used in the construction of `has_limits (Module R)`.
 -- After that, the limits should be constructed using the generic limits API,
 -- e.g. `limit F`, `limit.cone F`, and `limit.is_limit F`.
@@ -109,7 +140,9 @@ def limitCone (F : J ⥤ ModuleCat.{max v w} R) : Cone F
       naturality' := fun j j' f =>
         LinearMap.coe_injective ((Types.limitCone (F ⋙ forget _)).π.naturality f) }
 #align Module.has_limits.limit_cone ModuleCat.HasLimits.limitCone
+-/
 
+#print ModuleCat.HasLimits.limitConeIsLimit /-
 /-- Witness that the limit cone in `Module R` is a limit cone.
 (Internal use only; use the limits API.)
 -/
@@ -123,12 +156,14 @@ def limitConeIsLimit (F : J ⥤ ModuleCat.{max v w} R) : IsLimit (limitCone F) :
         LinearMap.map_smul] <;>
     rfl
 #align Module.has_limits.limit_cone_is_limit ModuleCat.HasLimits.limitConeIsLimit
+-/
 
 end HasLimits
 
 open HasLimits
 
 /- ./././Mathport/Syntax/Translate/Command.lean:322:38: unsupported irreducible non-definition -/
+#print ModuleCat.hasLimitsOfSize /-
 /-- The category of R-modules has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} (ModuleCat.{max v w} R) :=
   {
@@ -139,11 +174,20 @@ irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} (ModuleCat.{max v w} R)
             { Cone := limit_cone F
               IsLimit := limit_cone_is_limit F } } }
 #align Module.has_limits_of_size ModuleCat.hasLimitsOfSize
+-/
 
+#print ModuleCat.hasLimits /-
 instance hasLimits : HasLimits (ModuleCat.{w} R) :=
   ModuleCat.hasLimitsOfSize.{w, w, u}
 #align Module.has_limits ModuleCat.hasLimits
+-/
 
+/- warning: Module.forget₂_AddCommGroup_preserves_limits_aux -> ModuleCat.forget₂AddCommGroupPreservesLimitsAux is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max u3 (succ (max u1 u2))} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)), CategoryTheory.Limits.IsLimit.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 AddCommGroupCat.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{max u3 (succ (max u1 u2)), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1) AddCommGroupCat.largeCategory.{max u1 u2} AddCommGroupCat.concreteCategory.{max u1 u2} (ModuleCat.hasForgetToAddCommGroup.{u3, max u1 u2} R _inst_1))) (CategoryTheory.Functor.mapCone.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} AddCommGroupCat.largeCategory.{max u1 u2} F (CategoryTheory.forget₂.{max u3 (succ (max u1 u2)), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1) AddCommGroupCat.largeCategory.{max u1 u2} AddCommGroupCat.concreteCategory.{max u1 u2} (ModuleCat.hasForgetToAddCommGroup.{u3, max u1 u2} R _inst_1)) (ModuleCat.HasLimits.limitCone.{u1, u2, u3} R _inst_1 J _inst_2 F))
+but is expected to have type
+  forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] {J : Type.{u1}} [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (F : CategoryTheory.Functor.{u1, max u1 u2, u1, max (max u3 (succ u1)) (succ u2)} J _inst_2 (ModuleCat.ModuleCatMax.{u3, u1, u2} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1)), CategoryTheory.Limits.IsLimit.{u1, max u1 u2, u1, succ (max u1 u2)} J _inst_2 AddCommGroupCat.{max u1 u2} instAddCommGroupCatLargeCategory.{max u1 u2} (CategoryTheory.Functor.comp.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} instAddCommGroupCatLargeCategory.{max u1 u2} F (CategoryTheory.forget₂.{max u3 (succ (max u1 u2)), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1) instAddCommGroupCatLargeCategory.{max u1 u2} AddCommGroupCat.concreteCategory.{max u1 u2} (ModuleCat.hasForgetToAddCommGroup.{u3, max u1 u2} R _inst_1))) (CategoryTheory.Functor.mapCone.{u1, max u1 u2, max u1 u2, u1, max u3 (succ (max u1 u2)), succ (max u1 u2)} J _inst_2 (ModuleCat.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} instAddCommGroupCatLargeCategory.{max u1 u2} (CategoryTheory.forget₂.{max u3 (succ (max u1 u2)), succ (max u1 u2), max u1 u2, max u1 u2, max u1 u2} (ModuleCat.{max u1 u2, u3} R _inst_1) AddCommGroupCat.{max u1 u2} (ModuleCat.moduleCategory.{max u1 u2, u3} R _inst_1) (ModuleCat.moduleConcreteCategory.{max u1 u2, u3} R _inst_1) instAddCommGroupCatLargeCategory.{max u1 u2} AddCommGroupCat.concreteCategory.{max u1 u2} (ModuleCat.hasForgetToAddCommGroup.{u3, max u1 u2} R _inst_1)) F (ModuleCat.HasLimits.limitCone.{u1, u2, u3} R _inst_1 J _inst_2 F))
+Case conversion may be inaccurate. Consider using '#align Module.forget₂_AddCommGroup_preserves_limits_aux ModuleCat.forget₂AddCommGroupPreservesLimitsAuxₓ'. -/
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ ModuleCat.{max v w} R) :
@@ -151,6 +195,7 @@ def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ ModuleCat.{max v w} R) :
   AddCommGroupCat.limitConeIsLimit (F ⋙ forget₂ (ModuleCat R) AddCommGroupCat.{max v w})
 #align Module.forget₂_AddCommGroup_preserves_limits_aux ModuleCat.forget₂AddCommGroupPreservesLimitsAux
 
+#print ModuleCat.forget₂AddCommGroupPreservesLimitsOfSize /-
 /-- The forgetful functor from R-modules to abelian groups preserves all limits.
 -/
 instance forget₂AddCommGroupPreservesLimitsOfSize :
@@ -161,12 +206,16 @@ instance forget₂AddCommGroupPreservesLimitsOfSize :
         preserves_limit_of_preserves_limit_cone (limit_cone_is_limit F)
           (forget₂_AddCommGroup_preserves_limits_aux F) }
 #align Module.forget₂_AddCommGroup_preserves_limits_of_size ModuleCat.forget₂AddCommGroupPreservesLimitsOfSize
+-/
 
+#print ModuleCat.forget₂AddCommGroupPreservesLimits /-
 instance forget₂AddCommGroupPreservesLimits :
     PreservesLimits (forget₂ (ModuleCat R) AddCommGroupCat.{w}) :=
   ModuleCat.forget₂AddCommGroupPreservesLimitsOfSize.{w, w}
 #align Module.forget₂_AddCommGroup_preserves_limits ModuleCat.forget₂AddCommGroupPreservesLimits
+-/
 
+#print ModuleCat.forgetPreservesLimitsOfSize /-
 /-- The forgetful functor from R-modules to types preserves all limits.
 -/
 instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget (ModuleCat.{max v w} R))
@@ -176,10 +225,13 @@ instance forgetPreservesLimitsOfSize : PreservesLimitsOfSize.{v, v} (forget (Mod
         preserves_limit_of_preserves_limit_cone (limit_cone_is_limit F)
           (types.limit_cone_is_limit (F ⋙ forget _)) }
 #align Module.forget_preserves_limits_of_size ModuleCat.forgetPreservesLimitsOfSize
+-/
 
+#print ModuleCat.forgetPreservesLimits /-
 instance forgetPreservesLimits : PreservesLimits (forget (ModuleCat.{w} R)) :=
   ModuleCat.forgetPreservesLimitsOfSize.{w, w}
 #align Module.forget_preserves_limits ModuleCat.forgetPreservesLimits
+-/
 
 section DirectLimit
 
@@ -195,6 +247,12 @@ variable [∀ i, AddCommGroup (G i)] [∀ i, Module R (G i)]
 
 variable (f : ∀ i j, i ≤ j → G i →ₗ[R] G j) [DirectedSystem G fun i j h => f i j h]
 
+/- warning: Module.direct_limit_diagram -> ModuleCat.directLimitDiagram is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {ι : Type.{u1}} [_inst_3 : Preorder.{u1} ι] (G : ι -> Type.{u1}) [_inst_4 : forall (i : ι), AddCommGroup.{u1} (G i)] [_inst_5 : forall (i : ι), Module.{u2, u1} R (G i) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i))] (f : forall (i : ι) (j : ι), (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_3) i j) -> (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j))) [_inst_6 : DirectedSystem.{u1, u1} ι _inst_3 G (fun (i : ι) (j : ι) (h : LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_3) i j) => coeFn.{succ u1, succ u1} (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) (fun (_x : LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) => (G i) -> (G j)) (LinearMap.hasCoeToFun.{u2, u2, u1, u1} R R (G i) (G j) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)))) (f i j h))], CategoryTheory.Functor.{u1, u1, u1, max u2 (succ u1)} ι (Preorder.smallCategory.{u1} ι _inst_3) (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1)
+but is expected to have type
+  forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {ι : Type.{u1}} [_inst_3 : Preorder.{u1} ι] (G : ι -> Type.{u1}) [_inst_4 : forall (i : ι), AddCommGroup.{u1} (G i)] [_inst_5 : forall (i : ι), Module.{u2, u1} R (G i) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i))] (f : forall (i : ι) (j : ι), (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_3) i j) -> (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j))) [_inst_6 : DirectedSystem.{u1, u1} ι _inst_3 G (fun (i : ι) (j : ι) (h : LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_3) i j) => FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) (G i) (fun (_x : G i) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : G i) => G j) _x) (LinearMap.instFunLikeLinearMap.{u2, u2, u1, u1} R R (G i) (G j) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)))) (f i j h))], CategoryTheory.Functor.{u1, u1, u1, max u2 (succ u1)} ι (Preorder.smallCategory.{u1} ι _inst_3) (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1)
+Case conversion may be inaccurate. Consider using '#align Module.direct_limit_diagram ModuleCat.directLimitDiagramₓ'. -/
 /-- The diagram (in the sense of `category_theory`)
  of an unbundled `direct_limit` of modules. -/
 @[simps]
@@ -215,6 +273,12 @@ def directLimitDiagram : ι ⥤ ModuleCat R
 
 variable [DecidableEq ι]
 
+/- warning: Module.direct_limit_cocone -> ModuleCat.directLimitCocone is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {ι : Type.{u1}} [_inst_3 : Preorder.{u1} ι] (G : ι -> Type.{u1}) [_inst_4 : forall (i : ι), AddCommGroup.{u1} (G i)] [_inst_5 : forall (i : ι), Module.{u2, u1} R (G i) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i))] (f : forall (i : ι) (j : ι), (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_3) i j) -> (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j))) [_inst_6 : DirectedSystem.{u1, u1} ι _inst_3 G (fun (i : ι) (j : ι) (h : LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_3) i j) => coeFn.{succ u1, succ u1} (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) (fun (_x : LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) => (G i) -> (G j)) (LinearMap.hasCoeToFun.{u2, u2, u1, u1} R R (G i) (G j) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)))) (f i j h))] [_inst_7 : DecidableEq.{succ u1} ι], CategoryTheory.Limits.Cocone.{u1, u1, u1, max u2 (succ u1)} ι (Preorder.smallCategory.{u1} ι _inst_3) (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) (ModuleCat.directLimitDiagram.{u1, u2} R _inst_1 ι _inst_3 G (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_5 i) f _inst_6)
+but is expected to have type
+  forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {ι : Type.{u1}} [_inst_3 : Preorder.{u1} ι] (G : ι -> Type.{u1}) [_inst_4 : forall (i : ι), AddCommGroup.{u1} (G i)] [_inst_5 : forall (i : ι), Module.{u2, u1} R (G i) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i))] (f : forall (i : ι) (j : ι), (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_3) i j) -> (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j))) [_inst_6 : DirectedSystem.{u1, u1} ι _inst_3 G (fun (i : ι) (j : ι) (h : LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_3) i j) => FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) (G i) (fun (_x : G i) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : G i) => G j) _x) (LinearMap.instFunLikeLinearMap.{u2, u2, u1, u1} R R (G i) (G j) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)))) (f i j h))] [_inst_7 : DecidableEq.{succ u1} ι], CategoryTheory.Limits.Cocone.{u1, u1, u1, max u2 (succ u1)} ι (Preorder.smallCategory.{u1} ι _inst_3) (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) (ModuleCat.directLimitDiagram.{u1, u2} R _inst_1 ι _inst_3 G (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_5 i) f _inst_6)
+Case conversion may be inaccurate. Consider using '#align Module.direct_limit_cocone ModuleCat.directLimitCoconeₓ'. -/
 /-- The `cocone` on `direct_limit_diagram` corresponding to
 the unbundled `direct_limit` of modules.
 
@@ -231,6 +295,12 @@ def directLimitCocone : Cocone (directLimitDiagram G f)
         exact direct_limit.of_f }
 #align Module.direct_limit_cocone ModuleCat.directLimitCocone
 
+/- warning: Module.direct_limit_is_colimit -> ModuleCat.directLimitIsColimit is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {ι : Type.{u1}} [_inst_3 : Preorder.{u1} ι] (G : ι -> Type.{u1}) [_inst_4 : forall (i : ι), AddCommGroup.{u1} (G i)] [_inst_5 : forall (i : ι), Module.{u2, u1} R (G i) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i))] (f : forall (i : ι) (j : ι), (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_3) i j) -> (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j))) [_inst_6 : DirectedSystem.{u1, u1} ι _inst_3 G (fun (i : ι) (j : ι) (h : LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_3) i j) => coeFn.{succ u1, succ u1} (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) (fun (_x : LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) => (G i) -> (G j)) (LinearMap.hasCoeToFun.{u2, u2, u1, u1} R R (G i) (G j) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)))) (f i j h))] [_inst_7 : DecidableEq.{succ u1} ι] [_inst_8 : Nonempty.{succ u1} ι] [_inst_9 : IsDirected.{u1} ι (LE.le.{u1} ι (Preorder.toHasLe.{u1} ι _inst_3))], CategoryTheory.Limits.IsColimit.{u1, u1, u1, max u2 (succ u1)} ι (Preorder.smallCategory.{u1} ι _inst_3) (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) (ModuleCat.directLimitDiagram.{u1, u2} R _inst_1 ι _inst_3 G (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_5 i) f _inst_6) (ModuleCat.directLimitCocone.{u1, u2} R _inst_1 ι _inst_3 G (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_5 i) f _inst_6 (fun (a : ι) (b : ι) => _inst_7 a b))
+but is expected to have type
+  forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] {ι : Type.{u1}} [_inst_3 : Preorder.{u1} ι] (G : ι -> Type.{u1}) [_inst_4 : forall (i : ι), AddCommGroup.{u1} (G i)] [_inst_5 : forall (i : ι), Module.{u2, u1} R (G i) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i))] (f : forall (i : ι) (j : ι), (LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_3) i j) -> (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j))) [_inst_6 : DirectedSystem.{u1, u1} ι _inst_3 G (fun (i : ι) (j : ι) (h : LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_3) i j) => FunLike.coe.{succ u1, succ u1, succ u1} (LinearMap.{u2, u2, u1, u1} R R (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1))) (G i) (G j) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j)) (G i) (fun (_x : G i) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6193 : G i) => G j) _x) (LinearMap.instFunLikeLinearMap.{u2, u2, u1, u1} R R (G i) (G j) (Ring.toSemiring.{u2} R _inst_1) (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (G i) (_inst_4 i)) (AddCommGroup.toAddCommMonoid.{u1} (G j) (_inst_4 j)) (_inst_5 i) (_inst_5 j) (RingHom.id.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R _inst_1)))) (f i j h))] [_inst_7 : DecidableEq.{succ u1} ι] [_inst_8 : Nonempty.{succ u1} ι] [_inst_9 : IsDirected.{u1} ι (fun (x._@.Mathlib.Algebra.Category.ModuleCat.Limits._hyg.1595 : ι) (x._@.Mathlib.Algebra.Category.ModuleCat.Limits._hyg.1597 : ι) => LE.le.{u1} ι (Preorder.toLE.{u1} ι _inst_3) x._@.Mathlib.Algebra.Category.ModuleCat.Limits._hyg.1595 x._@.Mathlib.Algebra.Category.ModuleCat.Limits._hyg.1597)], CategoryTheory.Limits.IsColimit.{u1, u1, u1, max u2 (succ u1)} ι (Preorder.smallCategory.{u1} ι _inst_3) (ModuleCat.{u1, u2} R _inst_1) (ModuleCat.moduleCategory.{u1, u2} R _inst_1) (ModuleCat.directLimitDiagram.{u1, u2} R _inst_1 ι _inst_3 G (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_5 i) f _inst_6) (ModuleCat.directLimitCocone.{u1, u2} R _inst_1 ι _inst_3 G (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_5 i) f _inst_6 (fun (a : ι) (b : ι) => _inst_7 a b))
+Case conversion may be inaccurate. Consider using '#align Module.direct_limit_is_colimit ModuleCat.directLimitIsColimitₓ'. -/
 /-- The unbundled `direct_limit` of modules is a colimit
 in the sense of `category_theory`. -/
 @[simps]
Diff
@@ -128,7 +128,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 R-modules has all limits. -/
 irreducible_def hasLimitsOfSize : HasLimitsOfSize.{v, v} (ModuleCat.{max v w} R) :=
   {
Diff
@@ -70,23 +70,23 @@ def sectionsSubmodule (F : J ⥤ ModuleCat.{max v w} R) : Submodule R (∀ j, F.
 -- Adding the following instance speeds up `limit_module` noticeably,
 -- by preventing a bad unfold of `limit_add_comm_group`.
 instance limitAddCommMonoid (F : J ⥤ ModuleCat R) :
-    AddCommMonoid (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).x :=
+    AddCommMonoid (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).pt :=
   show AddCommMonoid (sectionsSubmodule F) by infer_instance
 #align Module.limit_add_comm_monoid ModuleCat.limitAddCommMonoid
 
 instance limitAddCommGroup (F : J ⥤ ModuleCat R) :
-    AddCommGroup (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).x :=
+    AddCommGroup (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).pt :=
   show AddCommGroup (sectionsSubmodule F) by infer_instance
 #align Module.limit_add_comm_group ModuleCat.limitAddCommGroup
 
 instance limitModule (F : J ⥤ ModuleCat R) :
-    Module R (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).x :=
+    Module R (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).pt :=
   show Module R (sectionsSubmodule F) by infer_instance
 #align Module.limit_module ModuleCat.limitModule
 
 /-- `limit.π (F ⋙ forget Ring) j` as a `ring_hom`. -/
 def limitπLinearMap (F : J ⥤ ModuleCat R) (j) :
-    (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).x →ₗ[R] (F ⋙ forget (ModuleCat R)).obj j
+    (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).pt →ₗ[R] (F ⋙ forget (ModuleCat R)).obj j
     where
   toFun := (Types.limitCone (F ⋙ forget (ModuleCat R))).π.app j
   map_smul' x y := rfl
@@ -103,7 +103,7 @@ namespace HasLimits
 -/
 def limitCone (F : J ⥤ ModuleCat.{max v w} R) : Cone F
     where
-  x := ModuleCat.of R (Types.limitCone (F ⋙ forget _)).x
+  pt := ModuleCat.of R (Types.limitCone (F ⋙ forget _)).pt
   π :=
     { app := limitπLinearMap F
       naturality' := fun j j' f =>
@@ -222,7 +222,7 @@ In `direct_limit_is_colimit` we show that it is a colimit cocone. -/
 @[simps]
 def directLimitCocone : Cocone (directLimitDiagram G f)
     where
-  x := ModuleCat.of R <| DirectLimit G f
+  pt := ModuleCat.of R <| DirectLimit G f
   ι :=
     { app := Module.DirectLimit.of R ι G f
       naturality' := fun i j hij => by
Diff
@@ -148,7 +148,7 @@ instance hasLimits : HasLimits (ModuleCat.{w} R) :=
 -/
 def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ ModuleCat.{max v w} R) :
     IsLimit ((forget₂ (ModuleCat R) AddCommGroupCat).mapCone (limitCone F)) :=
-  AddCommGroupCat.limit_cone_is_limit (F ⋙ forget₂ (ModuleCat R) AddCommGroupCat.{max v w})
+  AddCommGroupCat.limitConeIsLimit (F ⋙ forget₂ (ModuleCat R) AddCommGroupCat.{max v w})
 #align Module.forget₂_AddCommGroup_preserves_limits_aux ModuleCat.forget₂AddCommGroupPreservesLimitsAux
 
 /-- The forgetful functor from R-modules to abelian groups preserves all limits.
@@ -241,12 +241,12 @@ def directLimitIsColimit [Nonempty ι] [IsDirected ι (· ≤ ·)] : IsColimit (
       by
       rw [← s.w (hom_of_le h)]
       rfl
-  fac' s i := by
+  fac s i := by
     apply LinearMap.ext
     intro x
     dsimp
     exact direct_limit.lift_of s.ι.app _ x
-  uniq' s m h :=
+  uniq s m h :=
     by
     have :
       s.ι.app = fun i =>

Changes in mathlib4

mathlib3
mathlib4
feat(Algebra/Category/ModuleCat): the category of presheaves of modules has limits (#12264)

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

Diff
@@ -138,14 +138,13 @@ end HasLimits
 open HasLimits
 
 /-- If `(F ⋙ forget (ModuleCat R)).sections` is `u`-small, `F` has a limit. -/
-lemma hasLimit : HasLimit F := HasLimit.mk {
+instance hasLimit : HasLimit F := HasLimit.mk {
     cone := limitCone F
     isLimit := limitConeIsLimit F
   }
 
 /-- If `J` is `u`-small, the category of `R`-modules has limits of shape `J`. -/
 lemma hasLimitsOfShape [Small.{w} J] : HasLimitsOfShape J (ModuleCat.{w} R) where
-  has_limit F := hasLimit F
 
 -- Porting note: mathport translated this as `irreducible_def`, but as `HasLimitsOfSize`
 -- is a `Prop`, declaring this as `irreducible` should presumably have no effect
@@ -171,14 +170,22 @@ def forget₂AddCommGroupPreservesLimitsAux :
     (F ⋙ forget₂ (ModuleCat.{w} R) _ : J ⥤ AddCommGroupCat.{w})
 #align Module.forget₂_AddCommGroup_preserves_limits_aux ModuleCat.forget₂AddCommGroupPreservesLimitsAux
 
+/-- The forgetful functor from R-modules to abelian groups preserves all limits. -/
+instance forget₂AddCommGroupPreservesLimit :
+    PreservesLimit F (forget₂ (ModuleCat R) AddCommGroupCat) :=
+  preservesLimitOfPreservesLimitCone (limitConeIsLimit F)
+    (forget₂AddCommGroupPreservesLimitsAux F)
+
+instance forget₂AddCommGroupReflectsLimit :
+    ReflectsLimit F (forget₂ (ModuleCat R) AddCommGroupCat) :=
+  reflectsLimitOfReflectsIsomorphisms _ _
+
 /-- The forgetful functor from R-modules to abelian groups preserves all limits.
 -/
 instance forget₂AddCommGroupPreservesLimitsOfSize [UnivLE.{v, w}] :
     PreservesLimitsOfSize.{t, v}
       (forget₂ (ModuleCat.{w} R) AddCommGroupCat.{w}) where
-  preservesLimitsOfShape :=
-    { preservesLimit := fun {K} ↦ preservesLimitOfPreservesLimitCone (limitConeIsLimit K)
-          (forget₂AddCommGroupPreservesLimitsAux K) }
+  preservesLimitsOfShape := { preservesLimit := inferInstance }
 #align Module.forget₂_AddCommGroup_preserves_limits_of_size ModuleCat.forget₂AddCommGroupPreservesLimitsOfSize
 
 instance forget₂AddCommGroupPreservesLimits :
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
@@ -21,36 +21,33 @@ open CategoryTheory
 
 open CategoryTheory.Limits
 
-universe v w u
+universe v w u t
 
--- `u` is determined by the ring, so can come last
+-- `u` is determined by the ring, so can come later
 noncomputable section
 
 namespace ModuleCat
 
-variable (R : Type u) [Ring R]
-variable {J : Type v} [SmallCategory J]
-variable {R}
+variable {R : Type u} [Ring R]
+variable {J : Type v} [Category.{t} J] (F : J ⥤ ModuleCat.{w} R)
 
-instance addCommGroupObj (F : J ⥤ ModuleCatMax.{v, w, u} R) (j) :
-    AddCommGroup ((F ⋙ forget (ModuleCat R)).obj j) := by
-  change AddCommGroup (F.obj j)
-  infer_instance
+instance addCommGroupObj (j) :
+    AddCommGroup ((F ⋙ forget (ModuleCat R)).obj j) :=
+  inferInstanceAs <| AddCommGroup (F.obj j)
 set_option linter.uppercaseLean3 false
 #align Module.add_comm_group_obj ModuleCat.addCommGroupObj
 
-instance moduleObj (F : J ⥤ ModuleCatMax.{v, w, u} R) (j) :
-    Module.{u, max v w} R ((F ⋙ forget (ModuleCat R)).obj j) := by
-  change Module R (F.obj j)
-  infer_instance
+instance moduleObj (j) :
+    Module.{u, w} R ((F ⋙ forget (ModuleCat R)).obj j) :=
+  inferInstanceAs <| Module R (F.obj j)
 #align Module.module_obj ModuleCat.moduleObj
 
 /-- The flat sections of a functor into `ModuleCat R` form a submodule of all sections.
 -/
-def sectionsSubmodule (F : J ⥤ ModuleCatMax.{v, w, u} R) : Submodule R (∀ j, F.obj j) :=
+def sectionsSubmodule : Submodule R (∀ j, F.obj j) :=
   { AddGroupCat.sectionsAddSubgroup.{v, w}
-      (F ⋙ forget₂ (ModuleCat R) AddCommGroupCat.{max v w} ⋙
-          forget₂ AddCommGroupCat AddGroupCat.{max v w}) with
+      (F ⋙ forget₂ (ModuleCat R) AddCommGroupCat.{w} ⋙
+          forget₂ AddCommGroupCat AddGroupCat.{w}) with
     carrier := (F ⋙ forget (ModuleCat R)).sections
     smul_mem' := fun r s sh j j' f => by
       simp only [forget_map, Functor.comp_map, Pi.smul_apply, map_smul]
@@ -58,30 +55,48 @@ def sectionsSubmodule (F : J ⥤ ModuleCatMax.{v, w, u} R) : Submodule R (∀ j,
       rw [sh f] }
 #align Module.sections_submodule ModuleCat.sectionsSubmodule
 
+instance : AddCommMonoid (F ⋙ forget (ModuleCat R)).sections :=
+  inferInstanceAs <| AddCommMonoid (sectionsSubmodule F)
+
+instance : Module R (F ⋙ forget (ModuleCat R)).sections :=
+  inferInstanceAs <| Module R (sectionsSubmodule F)
+
+variable [Small.{w} (Functor.sections (F ⋙ forget (ModuleCat R)))]
+
+instance : Small.{w} (sectionsSubmodule F) :=
+  inferInstanceAs <| Small.{w} (Functor.sections (F ⋙ forget (ModuleCat R)))
+
 -- Adding the following instance speeds up `limitModule` noticeably,
 -- by preventing a bad unfold of `limitAddCommGroup`.
-instance limitAddCommMonoid (F : J ⥤ ModuleCatMax.{v, w, u} R) :
-    AddCommMonoid (Types.limitCone.{v, w} (F ⋙ forget (ModuleCatMax.{v, w, u} R))).pt :=
-  show AddCommMonoid (sectionsSubmodule F) by infer_instance
+instance limitAddCommMonoid :
+    AddCommMonoid (Types.Small.limitCone.{v, w} (F ⋙ forget (ModuleCat.{w} R))).pt :=
+  inferInstanceAs <| AddCommMonoid (Shrink (sectionsSubmodule F))
 #align Module.limit_add_comm_monoid ModuleCat.limitAddCommMonoid
 
-instance limitAddCommGroup (F : J ⥤ ModuleCatMax.{v, w, u} R) :
-    AddCommGroup (Types.limitCone.{v, w} (F ⋙ forget (ModuleCatMax.{v, w, u} R))).pt :=
-  show AddCommGroup (sectionsSubmodule F) by infer_instance
+instance limitAddCommGroup :
+    AddCommGroup (Types.Small.limitCone.{v, w} (F ⋙ forget (ModuleCat.{w} R))).pt :=
+  inferInstanceAs <| AddCommGroup (Shrink.{w} (sectionsSubmodule F))
 #align Module.limit_add_comm_group ModuleCat.limitAddCommGroup
 
-instance limitModule (F : J ⥤ ModuleCatMax.{v, w, u} R) :
-    Module R (Types.limitCone.{v, w} (F ⋙ forget (ModuleCat.{max v w} R))).pt :=
-  show Module R (sectionsSubmodule F) by infer_instance
+instance limitModule :
+    Module R (Types.Small.limitCone.{v, w} (F ⋙ forget (ModuleCat.{w} R))).pt :=
+  inferInstanceAs <| Module R (Shrink (sectionsSubmodule F))
 #align Module.limit_module ModuleCat.limitModule
 
-/-- `limit.π (F ⋙ forget Ring) j` as a `RingHom`. -/
-def limitπLinearMap (F : J ⥤ ModuleCatMax.{v, w, u} R) (j) :
-    (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).pt →ₗ[R] (F ⋙ forget (ModuleCat R)).obj j
+/-- `limit.π (F ⋙ forget (ModuleCat.{w} R)) j` as an `R`-linear map. -/
+def limitπLinearMap (j) :
+    (Types.Small.limitCone (F ⋙ forget (ModuleCat.{w} R))).pt →ₗ[R]
+      (F ⋙ forget (ModuleCat R)).obj j
     where
-  toFun := (Types.limitCone (F ⋙ forget (ModuleCat R))).π.app j
-  map_smul' _ _ := rfl
-  map_add' _ _ := rfl
+  toFun := (Types.Small.limitCone (F ⋙ forget (ModuleCat R))).π.app j
+  map_smul' _ _ := by
+    simp only [Types.Small.limitCone_π_app,
+      ← Shrink.linearEquiv_apply (F ⋙ forget (ModuleCat R)).sections R, map_smul]
+    simp only [Shrink.linearEquiv_apply]
+    rfl
+  map_add' _ _ := by
+    simp only [Types.Small.limitCone_π_app, ← Equiv.addEquiv_apply, map_add]
+    rfl
 #align Module.limit_π_linear_map ModuleCat.limitπLinearMap
 
 namespace HasLimits
@@ -92,25 +107,29 @@ namespace HasLimits
 /-- Construction of a limit cone in `ModuleCat R`.
 (Internal use only; use the limits API.)
 -/
-def limitCone (F : J ⥤ ModuleCatMax.{v, w, u} R) : Cone F where
-  pt := ModuleCat.of R (Types.limitCone.{v, w} (F ⋙ forget _)).pt
+def limitCone : Cone F where
+  pt := ModuleCat.of R (Types.Small.limitCone.{v, w} (F ⋙ forget _)).pt
   π :=
     { app := limitπLinearMap F
       naturality := fun _ _ f =>
-        LinearMap.coe_injective ((Types.limitCone (F ⋙ forget _)).π.naturality f) }
+        LinearMap.coe_injective ((Types.Small.limitCone (F ⋙ forget _)).π.naturality f) }
 #align Module.has_limits.limit_cone ModuleCat.HasLimits.limitCone
 
 /-- Witness that the limit cone in `ModuleCat R` is a limit cone.
 (Internal use only; use the limits API.)
 -/
-def limitConeIsLimit (F : J ⥤ ModuleCatMax.{v, w, u} R) : IsLimit (limitCone.{v, w} F) := by
-  refine' IsLimit.ofFaithful (forget (ModuleCat R)) (Types.limitConeIsLimit.{v, w} _)
-    (fun s => ⟨⟨(Types.limitConeIsLimit.{v, w} _).lift ((forget (ModuleCat R)).mapCone s), _⟩, _⟩)
+def limitConeIsLimit : IsLimit (limitCone.{v, w} F) := by
+  refine' IsLimit.ofFaithful (forget (ModuleCat R)) (Types.Small.limitConeIsLimit.{v, w} _)
+    (fun s => ⟨⟨(Types.Small.limitConeIsLimit.{v, w} _).lift
+                ((forget (ModuleCat R)).mapCone s), _⟩, _⟩)
     (fun s => rfl)
-  all_goals
-    intros
-    dsimp [Types.limitConeIsLimit]
-    simp
+  · intro x y
+    simp only [Types.Small.limitConeIsLimit_lift, Functor.mapCone_π_app, forget_map, map_add]
+    erw [← map_add (AddEquiv.symm Shrink.addEquiv)]
+    rfl
+  · intro r x
+    simp only [Types.Small.limitConeIsLimit_lift, Functor.mapCone_π_app, forget_map, map_smul]
+    erw [← map_smul (LinearEquiv.symm <| Shrink.linearEquiv _ _)]
     rfl
 #align Module.has_limits.limit_cone_is_limit ModuleCat.HasLimits.limitConeIsLimit
 
@@ -118,15 +137,21 @@ end HasLimits
 
 open HasLimits
 
+/-- If `(F ⋙ forget (ModuleCat R)).sections` is `u`-small, `F` has a limit. -/
+lemma hasLimit : HasLimit F := HasLimit.mk {
+    cone := limitCone F
+    isLimit := limitConeIsLimit F
+  }
+
+/-- If `J` is `u`-small, the category of `R`-modules has limits of shape `J`. -/
+lemma hasLimitsOfShape [Small.{w} J] : HasLimitsOfShape J (ModuleCat.{w} R) where
+  has_limit F := hasLimit F
 
 -- Porting note: mathport translated this as `irreducible_def`, but as `HasLimitsOfSize`
 -- is a `Prop`, declaring this as `irreducible` should presumably have no effect
 /-- The category of R-modules has all limits. -/
-lemma hasLimitsOfSize : HasLimitsOfSize.{v, v} (ModuleCatMax.{v, w, u} R) where
-  has_limits_of_shape := fun _ _ =>
-    { has_limit := fun F => HasLimit.mk
-        { cone := limitCone F
-          isLimit := limitConeIsLimit F } }
+lemma hasLimitsOfSize [UnivLE.{v, w}] : HasLimitsOfSize.{t, v} (ModuleCat.{w} R) where
+  has_limits_of_shape _ := hasLimitsOfShape
 #align Module.has_limits_of_size ModuleCat.hasLimitsOfSize
 
 instance hasLimits : HasLimits (ModuleCat.{w} R) :=
@@ -138,20 +163,22 @@ instance (priority := high) hasLimits' : HasLimits (ModuleCat.{u} R) :=
 
 /-- An auxiliary declaration to speed up typechecking.
 -/
-def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ ModuleCatMax.{v, w, u} R) :
+def forget₂AddCommGroupPreservesLimitsAux :
     IsLimit ((forget₂ (ModuleCat R) AddCommGroupCat).mapCone (limitCone F)) :=
+  letI : Small.{w} (Functor.sections ((F ⋙ forget₂ _ AddCommGroupCat) ⋙ forget _)) :=
+    inferInstanceAs <| Small.{w} (Functor.sections (F ⋙ forget (ModuleCat R)))
   AddCommGroupCat.limitConeIsLimit
-    (F ⋙ forget₂ (ModuleCatMax.{v, w, u} R) _ : J ⥤ AddCommGroupCat.{max v w})
+    (F ⋙ forget₂ (ModuleCat.{w} R) _ : J ⥤ AddCommGroupCat.{w})
 #align Module.forget₂_AddCommGroup_preserves_limits_aux ModuleCat.forget₂AddCommGroupPreservesLimitsAux
 
 /-- The forgetful functor from R-modules to abelian groups preserves all limits.
 -/
-instance forget₂AddCommGroupPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v}
-      (forget₂ (ModuleCatMax.{v, w, u} R) AddCommGroupCat.{max v w}) where
+instance forget₂AddCommGroupPreservesLimitsOfSize [UnivLE.{v, w}] :
+    PreservesLimitsOfSize.{t, v}
+      (forget₂ (ModuleCat.{w} R) AddCommGroupCat.{w}) where
   preservesLimitsOfShape :=
-    { preservesLimit := preservesLimitOfPreservesLimitCone (limitConeIsLimit _)
-          (forget₂AddCommGroupPreservesLimitsAux _) }
+    { preservesLimit := fun {K} ↦ preservesLimitOfPreservesLimitCone (limitConeIsLimit K)
+          (forget₂AddCommGroupPreservesLimitsAux K) }
 #align Module.forget₂_AddCommGroup_preserves_limits_of_size ModuleCat.forget₂AddCommGroupPreservesLimitsOfSize
 
 instance forget₂AddCommGroupPreservesLimits :
@@ -161,11 +188,11 @@ instance forget₂AddCommGroupPreservesLimits :
 
 /-- The forgetful functor from R-modules to types preserves all limits.
 -/
-instance forgetPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget (ModuleCatMax.{v, w, u} R)) where
+instance forgetPreservesLimitsOfSize [UnivLE.{v, w}] :
+    PreservesLimitsOfSize.{t, v} (forget (ModuleCat.{w} R)) where
   preservesLimitsOfShape :=
-    { preservesLimit := preservesLimitOfPreservesLimitCone (limitConeIsLimit _)
-        (Types.limitConeIsLimit (_ ⋙ forget _)) }
+    { preservesLimit := fun {K} ↦ preservesLimitOfPreservesLimitCone (limitConeIsLimit K)
+        (Types.Small.limitConeIsLimit.{v} (_ ⋙ forget _)) }
 #align Module.forget_preserves_limits_of_size ModuleCat.forgetPreservesLimitsOfSize
 
 instance forgetPreservesLimits : PreservesLimits (forget (ModuleCat.{w} R)) :=
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


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

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

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

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -29,9 +29,7 @@ noncomputable section
 namespace ModuleCat
 
 variable (R : Type u) [Ring R]
-
 variable {J : Type v} [SmallCategory J]
-
 variable {R}
 
 instance addCommGroupObj (F : J ⥤ ModuleCatMax.{v, w, u} R) (j) :
@@ -179,13 +177,9 @@ section DirectLimit
 open Module
 
 variable {ι : Type v}
-
 variable [dec_ι : DecidableEq ι] [Preorder ι]
-
 variable (G : ι → Type v)
-
 variable [∀ i, AddCommGroup (G i)] [∀ i, Module R (G i)]
-
 variable (f : ∀ i j, i ≤ j → G i →ₗ[R] G j) [DirectedSystem G fun i j h => f i j h]
 
 /-- The diagram (in the sense of `CategoryTheory`)
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -121,7 +121,7 @@ end HasLimits
 open HasLimits
 
 
--- porting note: mathport translated this as `irreducible_def`, but as `HasLimitsOfSize`
+-- Porting note: mathport translated this as `irreducible_def`, but as `HasLimitsOfSize`
 -- is a `Prop`, declaring this as `irreducible` should presumably have no effect
 /-- The category of R-modules has all limits. -/
 lemma hasLimitsOfSize : HasLimitsOfSize.{v, v} (ModuleCatMax.{v, w, u} R) where
chore: add some Unique instances (#8500)

The aim is to remove some extraneous Nonempty assumptions in Algebra/DirectLimit.

Co-authored-by: Junyan Xu <junyanxu.math@gmail.com> Co-authored-by: Jujian Zhang <jujian.zhang1998@outlook.com>

Diff
@@ -225,7 +225,7 @@ def directLimitCocone : Cocone (directLimitDiagram G f) where
 /-- The unbundled `directLimit` of modules is a colimit
 in the sense of `CategoryTheory`. -/
 @[simps]
-def directLimitIsColimit [Nonempty ι] [IsDirected ι (· ≤ ·)] : IsColimit (directLimitCocone G f)
+def directLimitIsColimit [IsDirected ι (· ≤ ·)] : IsColimit (directLimitCocone G f)
     where
   desc s :=
     DirectLimit.lift R ι G f s.ι.app fun i j h x => by
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,16 +2,13 @@
 Copyright (c) 2020 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.Module.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.Category.ModuleCat.Basic
 import Mathlib.Algebra.Category.GroupCat.Limits
 import Mathlib.Algebra.DirectLimit
 
+#align_import algebra.category.Module.limits from "leanprover-community/mathlib"@"c43486ecf2a5a17479a32ce09e4818924145e90e"
+
 /-!
 # The category of R-modules has all limits
 
feat: port Algebra.Category.Algebra.Limits (#5716)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Calvin Lee <calvins.lee@utah.edu> Co-authored-by: Johan Commelin <johan@commelin.net> Co-authored-by: Antoine Chambert-Loir <antoine.chambert-loir@math.univ-paris-diderot.fr>

Diff
@@ -110,7 +110,7 @@ def limitCone (F : J ⥤ ModuleCatMax.{v, w, u} R) : Cone F where
 -/
 def limitConeIsLimit (F : J ⥤ ModuleCatMax.{v, w, u} R) : IsLimit (limitCone.{v, w} F) := by
   refine' IsLimit.ofFaithful (forget (ModuleCat R)) (Types.limitConeIsLimit.{v, w} _)
-    (fun s => ⟨⟨(Types.limitConeIsLimit.{v, w} _).lift ((forget (ModuleCat R)).mapCone s), _⟩ , _⟩)
+    (fun s => ⟨⟨(Types.limitConeIsLimit.{v, w} _).lift ((forget (ModuleCat R)).mapCone s), _⟩, _⟩)
     (fun s => rfl)
   all_goals
     intros
feat: port RepresentationTheory.Rep (#5041)

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

Diff
@@ -138,6 +138,9 @@ instance hasLimits : HasLimits (ModuleCat.{w} R) :=
   ModuleCat.hasLimitsOfSize.{w, w, u}
 #align Module.has_limits ModuleCat.hasLimits
 
+instance (priority := high) hasLimits' : HasLimits (ModuleCat.{u} R) :=
+  ModuleCat.hasLimitsOfSize.{u, u, u}
+
 /-- An auxiliary declaration to speed up typechecking.
 -/
 def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ ModuleCatMax.{v, w, u} R) :
chore: tidy various files (#4854)
Diff
@@ -50,7 +50,7 @@ instance moduleObj (F : J ⥤ ModuleCatMax.{v, w, u} R) (j) :
   infer_instance
 #align Module.module_obj ModuleCat.moduleObj
 
-/-- The flat sections of a functor into `Module R` form a submodule of all sections.
+/-- The flat sections of a functor into `ModuleCat R` form a submodule of all sections.
 -/
 def sectionsSubmodule (F : J ⥤ ModuleCatMax.{v, w, u} R) : Submodule R (∀ j, F.obj j) :=
   { AddGroupCat.sectionsAddSubgroup.{v, w}
@@ -91,10 +91,10 @@ def limitπLinearMap (F : J ⥤ ModuleCatMax.{v, w, u} R) (j) :
 
 namespace HasLimits
 
--- The next two definitions are used in the construction of `HasLimits (Module R)`.
+-- The next two definitions are used in the construction of `HasLimits (ModuleCat R)`.
 -- After that, the limits should be constructed using the generic limits API,
 -- e.g. `limit F`, `limit.cone F`, and `limit.isLimit F`.
-/-- Construction of a limit cone in `Module R`.
+/-- Construction of a limit cone in `ModuleCat R`.
 (Internal use only; use the limits API.)
 -/
 def limitCone (F : J ⥤ ModuleCatMax.{v, w, u} R) : Cone F where
@@ -105,7 +105,7 @@ def limitCone (F : J ⥤ ModuleCatMax.{v, w, u} R) : Cone F where
         LinearMap.coe_injective ((Types.limitCone (F ⋙ forget _)).π.naturality f) }
 #align Module.has_limits.limit_cone ModuleCat.HasLimits.limitCone
 
-/-- Witness that the limit cone in `Module R` is a limit cone.
+/-- Witness that the limit cone in `ModuleCat R` is a limit cone.
 (Internal use only; use the limits API.)
 -/
 def limitConeIsLimit (F : J ⥤ ModuleCatMax.{v, w, u} R) : IsLimit (limitCone.{v, w} F) := by
feat: port Algebra.Category.Module.Colimits (#4282)

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

Diff
@@ -35,21 +35,16 @@ variable (R : Type u) [Ring R]
 
 variable {J : Type v} [SmallCategory J]
 
--- Porting note: typemax hack to fix universe complaints
-/-- An alias for `ModuleCat.{max u₁ u₂}`, to deal around unification issues. -/
-@[nolint checkUnivs]
-abbrev ModuleCatMax.{u₁, u₂} := ModuleCat.{max u₁ u₂} R
-
 variable {R}
 
-instance addCommGroupObj (F : J ⥤ ModuleCatMax.{u, v, w} R) (j) :
+instance addCommGroupObj (F : J ⥤ ModuleCatMax.{v, w, u} R) (j) :
     AddCommGroup ((F ⋙ forget (ModuleCat R)).obj j) := by
   change AddCommGroup (F.obj j)
   infer_instance
 set_option linter.uppercaseLean3 false
 #align Module.add_comm_group_obj ModuleCat.addCommGroupObj
 
-instance moduleObj (F : J ⥤ ModuleCatMax.{u, v, w} R) (j) :
+instance moduleObj (F : J ⥤ ModuleCatMax.{v, w, u} R) (j) :
     Module.{u, max v w} R ((F ⋙ forget (ModuleCat R)).obj j) := by
   change Module R (F.obj j)
   infer_instance
@@ -57,7 +52,7 @@ instance moduleObj (F : J ⥤ ModuleCatMax.{u, v, w} R) (j) :
 
 /-- The flat sections of a functor into `Module R` form a submodule of all sections.
 -/
-def sectionsSubmodule (F : J ⥤ ModuleCatMax.{u, v, w} R) : Submodule R (∀ j, F.obj j) :=
+def sectionsSubmodule (F : J ⥤ ModuleCatMax.{v, w, u} R) : Submodule R (∀ j, F.obj j) :=
   { AddGroupCat.sectionsAddSubgroup.{v, w}
       (F ⋙ forget₂ (ModuleCat R) AddCommGroupCat.{max v w} ⋙
           forget₂ AddCommGroupCat AddGroupCat.{max v w}) with
@@ -70,23 +65,23 @@ def sectionsSubmodule (F : J ⥤ ModuleCatMax.{u, v, w} R) : Submodule R (∀ j,
 
 -- Adding the following instance speeds up `limitModule` noticeably,
 -- by preventing a bad unfold of `limitAddCommGroup`.
-instance limitAddCommMonoid (F : J ⥤ ModuleCatMax.{u, v, w} R) :
-    AddCommMonoid (Types.limitCone.{v, w} (F ⋙ forget (ModuleCatMax.{u, v, w} R))).pt :=
+instance limitAddCommMonoid (F : J ⥤ ModuleCatMax.{v, w, u} R) :
+    AddCommMonoid (Types.limitCone.{v, w} (F ⋙ forget (ModuleCatMax.{v, w, u} R))).pt :=
   show AddCommMonoid (sectionsSubmodule F) by infer_instance
 #align Module.limit_add_comm_monoid ModuleCat.limitAddCommMonoid
 
-instance limitAddCommGroup (F : J ⥤ ModuleCatMax.{u, v, w} R) :
-    AddCommGroup (Types.limitCone.{v, w} (F ⋙ forget (ModuleCatMax.{u, v, w} R))).pt :=
+instance limitAddCommGroup (F : J ⥤ ModuleCatMax.{v, w, u} R) :
+    AddCommGroup (Types.limitCone.{v, w} (F ⋙ forget (ModuleCatMax.{v, w, u} R))).pt :=
   show AddCommGroup (sectionsSubmodule F) by infer_instance
 #align Module.limit_add_comm_group ModuleCat.limitAddCommGroup
 
-instance limitModule (F : J ⥤ ModuleCatMax.{u, v, w} R) :
+instance limitModule (F : J ⥤ ModuleCatMax.{v, w, u} R) :
     Module R (Types.limitCone.{v, w} (F ⋙ forget (ModuleCat.{max v w} R))).pt :=
   show Module R (sectionsSubmodule F) by infer_instance
 #align Module.limit_module ModuleCat.limitModule
 
 /-- `limit.π (F ⋙ forget Ring) j` as a `RingHom`. -/
-def limitπLinearMap (F : J ⥤ ModuleCatMax.{u, v, w} R) (j) :
+def limitπLinearMap (F : J ⥤ ModuleCatMax.{v, w, u} R) (j) :
     (Types.limitCone (F ⋙ forget (ModuleCat.{max v w} R))).pt →ₗ[R] (F ⋙ forget (ModuleCat R)).obj j
     where
   toFun := (Types.limitCone (F ⋙ forget (ModuleCat R))).π.app j
@@ -102,7 +97,7 @@ namespace HasLimits
 /-- Construction of a limit cone in `Module R`.
 (Internal use only; use the limits API.)
 -/
-def limitCone (F : J ⥤ ModuleCatMax.{u, v, w} R) : Cone F where
+def limitCone (F : J ⥤ ModuleCatMax.{v, w, u} R) : Cone F where
   pt := ModuleCat.of R (Types.limitCone.{v, w} (F ⋙ forget _)).pt
   π :=
     { app := limitπLinearMap F
@@ -113,7 +108,7 @@ def limitCone (F : J ⥤ ModuleCatMax.{u, v, w} R) : Cone F where
 /-- Witness that the limit cone in `Module R` is a limit cone.
 (Internal use only; use the limits API.)
 -/
-def limitConeIsLimit (F : J ⥤ ModuleCatMax.{u, v, w} R) : IsLimit (limitCone.{v, w} F) := by
+def limitConeIsLimit (F : J ⥤ ModuleCatMax.{v, w, u} R) : IsLimit (limitCone.{v, w} F) := by
   refine' IsLimit.ofFaithful (forget (ModuleCat R)) (Types.limitConeIsLimit.{v, w} _)
     (fun s => ⟨⟨(Types.limitConeIsLimit.{v, w} _).lift ((forget (ModuleCat R)).mapCone s), _⟩ , _⟩)
     (fun s => rfl)
@@ -132,7 +127,7 @@ open HasLimits
 -- porting note: mathport translated this as `irreducible_def`, but as `HasLimitsOfSize`
 -- is a `Prop`, declaring this as `irreducible` should presumably have no effect
 /-- The category of R-modules has all limits. -/
-lemma hasLimitsOfSize : HasLimitsOfSize.{v, v} (ModuleCatMax.{u, v, w} R) where
+lemma hasLimitsOfSize : HasLimitsOfSize.{v, v} (ModuleCatMax.{v, w, u} R) where
   has_limits_of_shape := fun _ _ =>
     { has_limit := fun F => HasLimit.mk
         { cone := limitCone F
@@ -145,17 +140,17 @@ instance hasLimits : HasLimits (ModuleCat.{w} R) :=
 
 /-- An auxiliary declaration to speed up typechecking.
 -/
-def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ ModuleCatMax.{u, v, w} R) :
+def forget₂AddCommGroupPreservesLimitsAux (F : J ⥤ ModuleCatMax.{v, w, u} R) :
     IsLimit ((forget₂ (ModuleCat R) AddCommGroupCat).mapCone (limitCone F)) :=
   AddCommGroupCat.limitConeIsLimit
-    (F ⋙ forget₂ (ModuleCatMax.{u, v, w} R) _ : J ⥤ AddCommGroupCat.{max v w})
+    (F ⋙ forget₂ (ModuleCatMax.{v, w, u} R) _ : J ⥤ AddCommGroupCat.{max v w})
 #align Module.forget₂_AddCommGroup_preserves_limits_aux ModuleCat.forget₂AddCommGroupPreservesLimitsAux
 
 /-- The forgetful functor from R-modules to abelian groups preserves all limits.
 -/
 instance forget₂AddCommGroupPreservesLimitsOfSize :
     PreservesLimitsOfSize.{v, v}
-      (forget₂ (ModuleCatMax.{u, v, w} R) AddCommGroupCat.{max v w}) where
+      (forget₂ (ModuleCatMax.{v, w, u} R) AddCommGroupCat.{max v w}) where
   preservesLimitsOfShape :=
     { preservesLimit := preservesLimitOfPreservesLimitCone (limitConeIsLimit _)
           (forget₂AddCommGroupPreservesLimitsAux _) }
@@ -169,7 +164,7 @@ instance forget₂AddCommGroupPreservesLimits :
 /-- The forgetful functor from R-modules to types preserves all limits.
 -/
 instance forgetPreservesLimitsOfSize :
-    PreservesLimitsOfSize.{v, v} (forget (ModuleCatMax.{u, v, w} R)) where
+    PreservesLimitsOfSize.{v, v} (forget (ModuleCatMax.{v, w, u} R)) where
   preservesLimitsOfShape :=
     { preservesLimit := preservesLimitOfPreservesLimitCone (limitConeIsLimit _)
         (Types.limitConeIsLimit (_ ⋙ forget _)) }
feat: port Algebra.Category.Module.Limits (#4297)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: int-y1 <jason_yuen2007@hotmail.com> Co-authored-by: Kevin Buzzard <k.buzzard@imperial.ac.uk> Co-authored-by: Joël Riou <joel.riou@universite-paris-saclay.fr> Co-authored-by: Chris Hughes <chrishughes24@gmail.com>

Dependencies 8 + 602

603 files ported (98.7%)
238735 lines ported (98.7%)
Show graph

The unported dependencies are