algebra.direct_sum.ringMathlib.Algebra.DirectSum.Ring

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -287,8 +287,8 @@ theorem ofPow {i} (a : A i) (n : ℕ) :
   by
   induction' n with n
   · exact of_eq_of_graded_monoid_eq (pow_zero <| GradedMonoid.mk _ a).symm
-  · rw [pow_succ, n_ih, of_mul_of]
-    exact of_eq_of_graded_monoid_eq (pow_succ (GradedMonoid.mk _ a) n).symm
+  · rw [pow_succ', n_ih, of_mul_of]
+    exact of_eq_of_graded_monoid_eq (pow_succ' (GradedMonoid.mk _ a) n).symm
 #align direct_sum.of_pow DirectSum.ofPow
 -/
 
@@ -486,7 +486,7 @@ variable [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A]
 @[simp]
 theorem of_zero_pow (a : A 0) : ∀ n : ℕ, of _ 0 (a ^ n) = of _ 0 a ^ n
   | 0 => by rw [pow_zero, pow_zero, DirectSum.of_zero_one]
-  | n + 1 => by rw [pow_succ, pow_succ, of_zero_mul, of_zero_pow]
+  | n + 1 => by rw [pow_succ', pow_succ', of_zero_mul, of_zero_pow]
 #align direct_sum.of_zero_pow DirectSum.of_zero_pow
 -/
 
Diff
@@ -493,18 +493,19 @@ theorem of_zero_pow (a : A 0) : ∀ n : ℕ, of _ 0 (a ^ n) = of _ 0 a ^ n
 instance : NatCast (A 0) :=
   ⟨GSemiring.natCast⟩
 
-#print DirectSum.ofNatCast /-
+#print DirectSum.of_natCast /-
 @[simp]
-theorem ofNatCast (n : ℕ) : of A 0 n = n :=
+theorem of_natCast (n : ℕ) : of A 0 n = n :=
   rfl
-#align direct_sum.of_nat_cast DirectSum.ofNatCast
+#align direct_sum.of_nat_cast DirectSum.of_natCast
 -/
 
 #print DirectSum.GradeZero.semiring /-
 /-- The `semiring` structure derived from `gsemiring A`. -/
 instance GradeZero.semiring : Semiring (A 0) :=
   Function.Injective.semiring (of A 0) DFinsupp.single_injective (of A 0).map_zero (of_zero_one A)
-    (of A 0).map_add (of_zero_mul A) (of A 0).map_nsmul (fun x n => of_zero_pow _ _ _) (ofNatCast A)
+    (of A 0).map_add (of_zero_mul A) (of A 0).map_nsmul (fun x n => of_zero_pow _ _ _)
+    (of_natCast A)
 #align direct_sum.grade_zero.semiring DirectSum.GradeZero.semiring
 -/
 
@@ -538,7 +539,7 @@ variable [∀ i, AddCommMonoid (A i)] [AddCommMonoid ι] [GCommSemiring A]
 instance GradeZero.commSemiring : CommSemiring (A 0) :=
   Function.Injective.commSemiring (of A 0) DFinsupp.single_injective (of A 0).map_zero
     (of_zero_one A) (of A 0).map_add (of_zero_mul A) (fun x n => DFinsupp.single_smul n x)
-    (fun x n => of_zero_pow _ _ _) (ofNatCast A)
+    (fun x n => of_zero_pow _ _ _) (of_natCast A)
 #align direct_sum.grade_zero.comm_semiring DirectSum.GradeZero.commSemiring
 -/
 
@@ -571,11 +572,11 @@ variable [∀ i, AddCommGroup (A i)] [AddMonoid ι] [GRing A]
 instance : IntCast (A 0) :=
   ⟨GRing.intCast⟩
 
-#print DirectSum.ofIntCast /-
+#print DirectSum.of_intCast /-
 @[simp]
-theorem ofIntCast (n : ℤ) : of A 0 n = n :=
+theorem of_intCast (n : ℤ) : of A 0 n = n :=
   rfl
-#align direct_sum.of_int_cast DirectSum.ofIntCast
+#align direct_sum.of_int_cast DirectSum.of_intCast
 -/
 
 #print DirectSum.GradeZero.ring /-
@@ -589,7 +590,7 @@ instance GradeZero.ring : Ring (A 0) :=
     (fun x n =>
       letI : ∀ i, DistribMulAction ℤ (A i) := fun i => inferInstance
       DFinsupp.single_smul n x)
-    (fun x n => of_zero_pow _ _ _) (ofNatCast A) (ofIntCast A)
+    (fun x n => of_zero_pow _ _ _) (of_natCast A) (of_intCast A)
 #align direct_sum.grade_zero.ring DirectSum.GradeZero.ring
 -/
 
@@ -610,7 +611,7 @@ instance GradeZero.commRing : CommRing (A 0) :=
     (fun x n =>
       letI : ∀ i, DistribMulAction ℤ (A i) := fun i => inferInstance
       DFinsupp.single_smul n x)
-    (fun x n => of_zero_pow _ _ _) (ofNatCast A) (ofIntCast A)
+    (fun x n => of_zero_pow _ _ _) (of_natCast A) (of_intCast A)
 #align direct_sum.grade_zero.comm_ring DirectSum.GradeZero.commRing
 -/
 
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2021 Eric Wieser. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
 -/
-import Mathbin.Algebra.GradedMonoid
-import Mathbin.Algebra.DirectSum.Basic
+import Algebra.GradedMonoid
+import Algebra.DirectSum.Basic
 
 #align_import algebra.direct_sum.ring from "leanprover-community/mathlib"@"50251fd6309cca5ca2e747882ffecd2729f38c5d"
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2021 Eric Wieser. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
-
-! This file was ported from Lean 3 source module algebra.direct_sum.ring
-! leanprover-community/mathlib commit 50251fd6309cca5ca2e747882ffecd2729f38c5d
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.GradedMonoid
 import Mathbin.Algebra.DirectSum.Basic
 
+#align_import algebra.direct_sum.ring from "leanprover-community/mathlib"@"50251fd6309cca5ca2e747882ffecd2729f38c5d"
+
 /-!
 # Additively-graded multiplicative structures on `⨁ i, A i`
 
Diff
@@ -149,7 +149,7 @@ end Defs
 theorem of_eq_of_gradedMonoid_eq {A : ι → Type _} [∀ i : ι, AddCommMonoid (A i)] {i j : ι} {a : A i}
     {b : A j} (h : GradedMonoid.mk i a = GradedMonoid.mk j b) :
     DirectSum.of A i a = DirectSum.of A j b :=
-  Dfinsupp.single_eq_of_sigma_eq h
+  DFinsupp.single_eq_of_sigma_eq h
 #align direct_sum.of_eq_of_graded_monoid_eq DirectSum.of_eq_of_gradedMonoid_eq
 -/
 
@@ -321,7 +321,7 @@ theorem mul_eq_dfinsupp_sum [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a'
     a * a' = a.Sum fun i ai => a'.Sum fun j aj => DirectSum.of _ _ <| GradedMonoid.GMul.mul ai aj :=
   by
   change MulHom _ a a' = _
-  simpa only [MulHom, to_add_monoid, Dfinsupp.liftAddHom_apply, Dfinsupp.sumAddHom_apply,
+  simpa only [MulHom, to_add_monoid, DFinsupp.liftAddHom_apply, DFinsupp.sumAddHom_apply,
     AddMonoidHom.dfinsupp_sum_apply, flip_apply, AddMonoidHom.dfinsupp_sumAddHom_apply]
 #align direct_sum.mul_eq_dfinsupp_sum DirectSum.mul_eq_dfinsupp_sum
 -/
@@ -331,9 +331,9 @@ theorem mul_eq_dfinsupp_sum [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a'
 /-- A heavily unfolded version of the definition of multiplication -/
 theorem mul_eq_sum_support_ghas_mul [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a' : ⨁ i, A i) :
     a * a' =
-      ∑ ij in Dfinsupp.support a ×ˢ Dfinsupp.support a',
+      ∑ ij in DFinsupp.support a ×ˢ DFinsupp.support a',
         DirectSum.of _ _ (GradedMonoid.GMul.mul (a ij.fst) (a' ij.snd)) :=
-  by simp only [mul_eq_dfinsupp_sum, Dfinsupp.sum, Finset.sum_product]
+  by simp only [mul_eq_dfinsupp_sum, DFinsupp.sum, Finset.sum_product]
 #align direct_sum.mul_eq_sum_support_ghas_mul DirectSum.mul_eq_sum_support_ghas_mul
 -/
 
@@ -466,8 +466,8 @@ theorem of_zero_mul (a b : A 0) : of _ 0 (a * b) = of _ 0 a * of _ 0 b :=
 
 #print DirectSum.GradeZero.nonUnitalNonAssocSemiring /-
 instance GradeZero.nonUnitalNonAssocSemiring : NonUnitalNonAssocSemiring (A 0) :=
-  Function.Injective.nonUnitalNonAssocSemiring (of A 0) Dfinsupp.single_injective (of A 0).map_zero
-    (of A 0).map_add (of_zero_mul A) fun x n => Dfinsupp.single_smul n x
+  Function.Injective.nonUnitalNonAssocSemiring (of A 0) DFinsupp.single_injective (of A 0).map_zero
+    (of A 0).map_add (of_zero_mul A) fun x n => DFinsupp.single_smul n x
 #align direct_sum.grade_zero.non_unital_non_assoc_semiring DirectSum.GradeZero.nonUnitalNonAssocSemiring
 -/
 
@@ -506,7 +506,7 @@ theorem ofNatCast (n : ℕ) : of A 0 n = n :=
 #print DirectSum.GradeZero.semiring /-
 /-- The `semiring` structure derived from `gsemiring A`. -/
 instance GradeZero.semiring : Semiring (A 0) :=
-  Function.Injective.semiring (of A 0) Dfinsupp.single_injective (of A 0).map_zero (of_zero_one A)
+  Function.Injective.semiring (of A 0) DFinsupp.single_injective (of A 0).map_zero (of_zero_one A)
     (of A 0).map_add (of_zero_mul A) (of A 0).map_nsmul (fun x n => of_zero_pow _ _ _) (ofNatCast A)
 #align direct_sum.grade_zero.semiring DirectSum.GradeZero.semiring
 -/
@@ -539,8 +539,8 @@ variable [∀ i, AddCommMonoid (A i)] [AddCommMonoid ι] [GCommSemiring A]
 #print DirectSum.GradeZero.commSemiring /-
 /-- The `comm_semiring` structure derived from `gcomm_semiring A`. -/
 instance GradeZero.commSemiring : CommSemiring (A 0) :=
-  Function.Injective.commSemiring (of A 0) Dfinsupp.single_injective (of A 0).map_zero
-    (of_zero_one A) (of A 0).map_add (of_zero_mul A) (fun x n => Dfinsupp.single_smul n x)
+  Function.Injective.commSemiring (of A 0) DFinsupp.single_injective (of A 0).map_zero
+    (of_zero_one A) (of A 0).map_add (of_zero_mul A) (fun x n => DFinsupp.single_smul n x)
     (fun x n => of_zero_pow _ _ _) (ofNatCast A)
 #align direct_sum.grade_zero.comm_semiring DirectSum.GradeZero.commSemiring
 -/
@@ -554,14 +554,14 @@ variable [∀ i, AddCommGroup (A i)] [AddZeroClass ι] [GNonUnitalNonAssocSemiri
 #print DirectSum.GradeZero.nonUnitalNonAssocRing /-
 /-- The `non_unital_non_assoc_ring` derived from `gnon_unital_non_assoc_semiring A`. -/
 instance GradeZero.nonUnitalNonAssocRing : NonUnitalNonAssocRing (A 0) :=
-  Function.Injective.nonUnitalNonAssocRing (of A 0) Dfinsupp.single_injective (of A 0).map_zero
+  Function.Injective.nonUnitalNonAssocRing (of A 0) DFinsupp.single_injective (of A 0).map_zero
     (of A 0).map_add (of_zero_mul A) (of A 0).map_neg (of A 0).map_sub
     (fun x n =>
       letI : ∀ i, DistribMulAction ℕ (A i) := fun i => inferInstance
-      Dfinsupp.single_smul n x)
+      DFinsupp.single_smul n x)
     fun x n =>
     letI : ∀ i, DistribMulAction ℤ (A i) := fun i => inferInstance
-    Dfinsupp.single_smul n x
+    DFinsupp.single_smul n x
 #align direct_sum.grade_zero.non_unital_non_assoc_ring DirectSum.GradeZero.nonUnitalNonAssocRing
 -/
 
@@ -584,14 +584,14 @@ theorem ofIntCast (n : ℤ) : of A 0 n = n :=
 #print DirectSum.GradeZero.ring /-
 /-- The `ring` derived from `gsemiring A`. -/
 instance GradeZero.ring : Ring (A 0) :=
-  Function.Injective.ring (of A 0) Dfinsupp.single_injective (of A 0).map_zero (of_zero_one A)
+  Function.Injective.ring (of A 0) DFinsupp.single_injective (of A 0).map_zero (of_zero_one A)
     (of A 0).map_add (of_zero_mul A) (of A 0).map_neg (of A 0).map_sub
     (fun x n =>
       letI : ∀ i, DistribMulAction ℕ (A i) := fun i => inferInstance
-      Dfinsupp.single_smul n x)
+      DFinsupp.single_smul n x)
     (fun x n =>
       letI : ∀ i, DistribMulAction ℤ (A i) := fun i => inferInstance
-      Dfinsupp.single_smul n x)
+      DFinsupp.single_smul n x)
     (fun x n => of_zero_pow _ _ _) (ofNatCast A) (ofIntCast A)
 #align direct_sum.grade_zero.ring DirectSum.GradeZero.ring
 -/
@@ -605,14 +605,14 @@ variable [∀ i, AddCommGroup (A i)] [AddCommMonoid ι] [GCommRing A]
 #print DirectSum.GradeZero.commRing /-
 /-- The `comm_ring` derived from `gcomm_semiring A`. -/
 instance GradeZero.commRing : CommRing (A 0) :=
-  Function.Injective.commRing (of A 0) Dfinsupp.single_injective (of A 0).map_zero (of_zero_one A)
+  Function.Injective.commRing (of A 0) DFinsupp.single_injective (of A 0).map_zero (of_zero_one A)
     (of A 0).map_add (of_zero_mul A) (of A 0).map_neg (of A 0).map_sub
     (fun x n =>
       letI : ∀ i, DistribMulAction ℕ (A i) := fun i => inferInstance
-      Dfinsupp.single_smul n x)
+      DFinsupp.single_smul n x)
     (fun x n =>
       letI : ∀ i, DistribMulAction ℤ (A i) := fun i => inferInstance
-      Dfinsupp.single_smul n x)
+      DFinsupp.single_smul n x)
     (fun x n => of_zero_pow _ _ _) (ofNatCast A) (ofIntCast A)
 #align direct_sum.grade_zero.comm_ring DirectSum.GradeZero.commRing
 -/
Diff
@@ -262,7 +262,7 @@ private theorem mul_assoc (a b c : ⨁ i, A i) : a * b * c = a * (b * c) :=
                     A).flip.compHom.comp
             (mulHom A)).flip
     from AddMonoidHom.congr_fun (AddMonoidHom.congr_fun (AddMonoidHom.congr_fun this a) b) c
-  ext (ai ax bi bx ci cx) : 6
+  ext ai ax bi bx ci cx : 6
   dsimp only [coe_comp, Function.comp_apply, comp_hom_apply_apply, flip_apply, flip_hom_apply]
   rw [mul_hom_of_of, mul_hom_of_of, mul_hom_of_of, mul_hom_of_of]
   exact of_eq_of_graded_monoid_eq (mul_assoc (GradedMonoid.mk ai ax) ⟨bi, bx⟩ ⟨ci, cx⟩)
@@ -666,7 +666,7 @@ def toSemiring (f : ∀ i, A i →+ R) (hone : f _ GradedMonoid.GOne.one = 1)
       exact hone
     map_mul' := by
       rw [(to_add_monoid f).map_mul_iff]
-      ext (xi xv yi yv) : 4
+      ext xi xv yi yv : 4
       show
         to_add_monoid f (of A xi xv * of A yi yv) =
           to_add_monoid f (of A xi xv) * to_add_monoid f (of A yi yv)
@@ -713,11 +713,11 @@ def liftRingHom :
       simp only [AddMonoidHom.comp_apply, RingHom.coe_addMonoidHom]
       rw [← F.map_mul, of_mul_of]⟩
   left_inv f := by
-    ext (xi xv)
+    ext xi xv
     exact to_add_monoid_of (fun _ => f.1) xi xv
   right_inv F := by
     apply RingHom.coe_addMonoidHom_injective
-    ext (xi xv)
+    ext xi xv
     simp only [RingHom.coe_addMonoidHom_mk, DirectSum.toAddMonoid_of, AddMonoidHom.mk_coe,
       AddMonoidHom.comp_apply, to_semiring_coe_add_monoid_hom]
 #align direct_sum.lift_ring_hom DirectSum.liftRingHom
Diff
@@ -94,6 +94,7 @@ section Defs
 
 variable (A : ι → Type _)
 
+#print DirectSum.GNonUnitalNonAssocSemiring /-
 /-- A graded version of `non_unital_non_assoc_semiring`. -/
 class GNonUnitalNonAssocSemiring [Add ι] [∀ i, AddCommMonoid (A i)] extends
     GradedMonoid.GMul A where
@@ -102,6 +103,7 @@ class GNonUnitalNonAssocSemiring [Add ι] [∀ i, AddCommMonoid (A i)] extends
   mul_add : ∀ {i j} (a : A i) (b c : A j), mul a (b + c) = mul a b + mul a c
   add_mul : ∀ {i j} (a b : A i) (c : A j), mul (a + b) c = mul a c + mul b c
 #align direct_sum.gnon_unital_non_assoc_semiring DirectSum.GNonUnitalNonAssocSemiring
+-/
 
 end Defs
 
@@ -109,6 +111,7 @@ section Defs
 
 variable (A : ι → Type _)
 
+#print DirectSum.GSemiring /-
 /-- A graded version of `semiring`. -/
 class GSemiring [AddMonoid ι] [∀ i, AddCommMonoid (A i)] extends GNonUnitalNonAssocSemiring A,
     GradedMonoid.GMonoid A where
@@ -116,30 +119,39 @@ class GSemiring [AddMonoid ι] [∀ i, AddCommMonoid (A i)] extends GNonUnitalNo
   natCast_zero : nat_cast 0 = 0
   natCast_succ : ∀ n : ℕ, nat_cast (n + 1) = nat_cast n + GradedMonoid.GOne.one
 #align direct_sum.gsemiring DirectSum.GSemiring
+-/
 
+#print DirectSum.GCommSemiring /-
 /-- A graded version of `comm_semiring`. -/
 class GCommSemiring [AddCommMonoid ι] [∀ i, AddCommMonoid (A i)] extends GSemiring A,
     GradedMonoid.GCommMonoid A
 #align direct_sum.gcomm_semiring DirectSum.GCommSemiring
+-/
 
+#print DirectSum.GRing /-
 /-- A graded version of `ring`. -/
 class GRing [AddMonoid ι] [∀ i, AddCommGroup (A i)] extends GSemiring A where
   intCast : ℤ → A 0
   intCast_ofNat : ∀ n : ℕ, int_cast n = nat_cast n
   intCast_negSucc : ∀ n : ℕ, int_cast (-(n + 1 : ℕ)) = -nat_cast (n + 1 : ℕ)
 #align direct_sum.gring DirectSum.GRing
+-/
 
+#print DirectSum.GCommRing /-
 /-- A graded version of `comm_ring`. -/
 class GCommRing [AddCommMonoid ι] [∀ i, AddCommGroup (A i)] extends GRing A, GCommSemiring A
 #align direct_sum.gcomm_ring DirectSum.GCommRing
+-/
 
 end Defs
 
+#print DirectSum.of_eq_of_gradedMonoid_eq /-
 theorem of_eq_of_gradedMonoid_eq {A : ι → Type _} [∀ i : ι, AddCommMonoid (A i)] {i j : ι} {a : A i}
     {b : A j} (h : GradedMonoid.mk i a = GradedMonoid.mk j b) :
     DirectSum.of A i a = DirectSum.of A j b :=
   Dfinsupp.single_eq_of_sigma_eq h
 #align direct_sum.of_eq_of_graded_monoid_eq DirectSum.of_eq_of_gradedMonoid_eq
+-/
 
 variable (A : ι → Type _)
 
@@ -160,6 +172,7 @@ variable [Add ι] [∀ i, AddCommMonoid (A i)] [GNonUnitalNonAssocSemiring A]
 
 open AddMonoidHom (flip_apply coe_comp compHom_apply_apply)
 
+#print DirectSum.gMulHom /-
 /-- The piecewise multiplication from the `has_mul` instance, as a bundled homomorphism. -/
 @[simps]
 def gMulHom {i j} : A i →+ A j →+ A (i + j)
@@ -171,6 +184,7 @@ def gMulHom {i j} : A i →+ A j →+ A (i + j)
   map_zero' := AddMonoidHom.ext fun a => GNonUnitalNonAssocSemiring.zero_mul a
   map_add' a₁ a₂ := AddMonoidHom.ext fun b => GNonUnitalNonAssocSemiring.add_mul _ _ _
 #align direct_sum.gmul_hom DirectSum.gMulHom
+-/
 
 #print DirectSum.mulHom /-
 /-- The multiplication from the `has_mul` instance, as a bundled homomorphism. -/
@@ -194,6 +208,7 @@ instance : NonUnitalNonAssocSemiring (⨁ i, A i) :=
 
 variable {A}
 
+#print DirectSum.mulHom_of_of /-
 theorem mulHom_of_of {i j} (a : A i) (b : A j) :
     mulHom A (of _ i a) (of _ j b) = of _ (i + j) (GradedMonoid.GMul.mul a b) :=
   by
@@ -201,11 +216,14 @@ theorem mulHom_of_of {i j} (a : A i) (b : A j) :
   rw [to_add_monoid_of, flip_apply, to_add_monoid_of, flip_apply, coe_comp, Function.comp_apply,
     comp_hom_apply_apply, coe_comp, Function.comp_apply, gmul_hom_apply_apply]
 #align direct_sum.mul_hom_of_of DirectSum.mulHom_of_of
+-/
 
+#print DirectSum.of_mul_of /-
 theorem of_mul_of {i j} (a : A i) (b : A j) :
     of _ i a * of _ j b = of _ (i + j) (GradedMonoid.GMul.mul a b) :=
   mulHom_of_of a b
 #align direct_sum.of_mul_of DirectSum.of_mul_of
+-/
 
 end Mul
 
@@ -266,6 +284,7 @@ instance semiring : Semiring (⨁ i, A i) :=
 #align direct_sum.semiring DirectSum.semiring
 -/
 
+#print DirectSum.ofPow /-
 theorem ofPow {i} (a : A i) (n : ℕ) :
     of _ i a ^ n = of _ (n • i) (GradedMonoid.GMonoid.gnpow _ a) :=
   by
@@ -274,7 +293,9 @@ theorem ofPow {i} (a : A i) (n : ℕ) :
   · rw [pow_succ, n_ih, of_mul_of]
     exact of_eq_of_graded_monoid_eq (pow_succ (GradedMonoid.mk _ a) n).symm
 #align direct_sum.of_pow DirectSum.ofPow
+-/
 
+#print DirectSum.ofList_dProd /-
 theorem ofList_dProd {α} (l : List α) (fι : α → ι) (fA : ∀ a, A (fι a)) :
     of A _ (l.dProd fι fA) = (l.map fun a => of A (fι a) (fA a)).Prod :=
   by
@@ -284,11 +305,14 @@ theorem ofList_dProd {α} (l : List α) (fι : α → ι) (fA : ∀ a, A (fι a)
   · simp only [List.map_cons, List.prod_cons, List.dProd_cons, ← l_ih, DirectSum.of_mul_of]
     rfl
 #align direct_sum.of_list_dprod DirectSum.ofList_dProd
+-/
 
+#print DirectSum.list_prod_ofFn_of_eq_dProd /-
 theorem list_prod_ofFn_of_eq_dProd (n : ℕ) (fι : Fin n → ι) (fA : ∀ a, A (fι a)) :
     (List.ofFn fun a => of A (fι a) (fA a)).Prod = of A _ ((List.finRange n).dProd fι fA) := by
   rw [List.ofFn_eq_map, of_list_dprod]
 #align direct_sum.list_prod_of_fn_of_eq_dprod DirectSum.list_prod_ofFn_of_eq_dProd
+-/
 
 open scoped BigOperators
 
@@ -413,10 +437,12 @@ section One
 
 variable [Zero ι] [GradedMonoid.GOne A] [∀ i, AddCommMonoid (A i)]
 
+#print DirectSum.of_zero_one /-
 @[simp]
 theorem of_zero_one : of _ 0 (1 : A 0) = 1 :=
   rfl
 #align direct_sum.of_zero_one DirectSum.of_zero_one
+-/
 
 end One
 
@@ -424,15 +450,19 @@ section Mul
 
 variable [AddZeroClass ι] [∀ i, AddCommMonoid (A i)] [GNonUnitalNonAssocSemiring A]
 
+#print DirectSum.of_zero_smul /-
 @[simp]
 theorem of_zero_smul {i} (a : A 0) (b : A i) : of _ _ (a • b) = of _ _ a * of _ _ b :=
   (of_eq_of_gradedMonoid_eq (GradedMonoid.mk_zero_smul a b)).trans (of_mul_of _ _).symm
 #align direct_sum.of_zero_smul DirectSum.of_zero_smul
+-/
 
+#print DirectSum.of_zero_mul /-
 @[simp]
 theorem of_zero_mul (a b : A 0) : of _ 0 (a * b) = of _ 0 a * of _ 0 b :=
   of_zero_smul A a b
 #align direct_sum.of_zero_mul DirectSum.of_zero_mul
+-/
 
 #print DirectSum.GradeZero.nonUnitalNonAssocSemiring /-
 instance GradeZero.nonUnitalNonAssocSemiring : NonUnitalNonAssocSemiring (A 0) :=
@@ -455,19 +485,23 @@ section Semiring
 
 variable [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A]
 
+#print DirectSum.of_zero_pow /-
 @[simp]
 theorem of_zero_pow (a : A 0) : ∀ n : ℕ, of _ 0 (a ^ n) = of _ 0 a ^ n
   | 0 => by rw [pow_zero, pow_zero, DirectSum.of_zero_one]
   | n + 1 => by rw [pow_succ, pow_succ, of_zero_mul, of_zero_pow]
 #align direct_sum.of_zero_pow DirectSum.of_zero_pow
+-/
 
 instance : NatCast (A 0) :=
   ⟨GSemiring.natCast⟩
 
+#print DirectSum.ofNatCast /-
 @[simp]
 theorem ofNatCast (n : ℕ) : of A 0 n = n :=
   rfl
 #align direct_sum.of_nat_cast DirectSum.ofNatCast
+-/
 
 #print DirectSum.GradeZero.semiring /-
 /-- The `semiring` structure derived from `gsemiring A`. -/
@@ -540,10 +574,12 @@ variable [∀ i, AddCommGroup (A i)] [AddMonoid ι] [GRing A]
 instance : IntCast (A 0) :=
   ⟨GRing.intCast⟩
 
+#print DirectSum.ofIntCast /-
 @[simp]
 theorem ofIntCast (n : ℤ) : of A 0 n = n :=
   rfl
 #align direct_sum.of_int_cast DirectSum.ofIntCast
+-/
 
 #print DirectSum.GradeZero.ring /-
 /-- The `ring` derived from `gsemiring A`. -/
@@ -591,6 +627,7 @@ variable {R : Type _} [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A]
 
 variable {A}
 
+#print DirectSum.ringHom_ext' /-
 /-- If two ring homomorphisms from `⨁ i, A i` are equal on each `of A i y`,
 then they are equal.
 
@@ -600,11 +637,14 @@ theorem ringHom_ext' ⦃F G : (⨁ i, A i) →+* R⦄
     (h : ∀ i, (↑F : _ →+ R).comp (of A i) = (↑G : _ →+ R).comp (of A i)) : F = G :=
   RingHom.coe_addMonoidHom_injective <| DirectSum.addHom_ext' h
 #align direct_sum.ring_hom_ext' DirectSum.ringHom_ext'
+-/
 
+#print DirectSum.ringHom_ext /-
 /-- Two `ring_hom`s out of a direct sum are equal if they agree on the generators. -/
 theorem ringHom_ext ⦃f g : (⨁ i, A i) →+* R⦄ (h : ∀ i x, f (of A i x) = g (of A i x)) : f = g :=
   ringHom_ext' fun i => AddMonoidHom.ext <| h i
 #align direct_sum.ring_hom_ext DirectSum.ringHom_ext
+-/
 
 #print DirectSum.toSemiring /-
 /-- A family of `add_monoid_hom`s preserving `direct_sum.ghas_one.one` and `direct_sum.ghas_mul.mul`
@@ -635,17 +675,21 @@ def toSemiring (f : ∀ i, A i →+ R) (hone : f _ GradedMonoid.GOne.one = 1)
 #align direct_sum.to_semiring DirectSum.toSemiring
 -/
 
+#print DirectSum.toSemiring_of /-
 @[simp]
 theorem toSemiring_of (f : ∀ i, A i →+ R) (hone hmul) (i : ι) (x : A i) :
     toSemiring f hone hmul (of _ i x) = f _ x :=
   toAddMonoid_of f i x
 #align direct_sum.to_semiring_of DirectSum.toSemiring_of
+-/
 
+#print DirectSum.toSemiring_coe_addMonoidHom /-
 @[simp]
 theorem toSemiring_coe_addMonoidHom (f : ∀ i, A i →+ R) (hone hmul) :
     (toSemiring f hone hmul : (⨁ i, A i) →+ R) = toAddMonoid f :=
   rfl
 #align direct_sum.to_semiring_coe_add_monoid_hom DirectSum.toSemiring_coe_addMonoidHom
+-/
 
 #print DirectSum.liftRingHom /-
 /-- Families of `add_monoid_hom`s preserving `direct_sum.ghas_one.one` and `direct_sum.ghas_mul.mul`
@@ -690,6 +734,7 @@ section Uniform
 
 variable (ι)
 
+#print NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring /-
 /-- A direct sum of copies of a `semiring` inherits the multiplication structure. -/
 instance NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring {R : Type _} [AddMonoid ι]
     [NonUnitalNonAssocSemiring R] : DirectSum.GNonUnitalNonAssocSemiring fun i : ι => R :=
@@ -699,7 +744,9 @@ instance NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring {R : Type
     mul_add := fun i j => mul_add
     add_mul := fun i j => add_mul }
 #align non_unital_non_assoc_semiring.direct_sum_gnon_unital_non_assoc_semiring NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring
+-/
 
+#print Semiring.directSumGSemiring /-
 /-- A direct sum of copies of a `semiring` inherits the multiplication structure. -/
 instance Semiring.directSumGSemiring {R : Type _} [AddMonoid ι] [Semiring R] :
     DirectSum.GSemiring fun i : ι => R :=
@@ -709,6 +756,7 @@ instance Semiring.directSumGSemiring {R : Type _} [AddMonoid ι] [Semiring R] :
     natCast_zero := Nat.cast_zero
     natCast_succ := Nat.cast_succ }
 #align semiring.direct_sum_gsemiring Semiring.directSumGSemiring
+-/
 
 open scoped DirectSum
 
@@ -717,12 +765,14 @@ example {R : Type _} [AddMonoid ι] [Semiring R] (i j : ι) (a b : R) :
     (DirectSum.of _ i a * DirectSum.of _ j b : ⨁ i, R) = DirectSum.of _ (i + j) (a * b) := by
   rw [DirectSum.of_mul_of, Mul.gMul_mul]
 
+#print CommSemiring.directSumGCommSemiring /-
 /-- A direct sum of copies of a `comm_semiring` inherits the commutative multiplication structure.
 -/
 instance CommSemiring.directSumGCommSemiring {R : Type _} [AddCommMonoid ι] [CommSemiring R] :
     DirectSum.GCommSemiring fun i : ι => R :=
   { CommMonoid.gCommMonoid ι, Semiring.directSumGSemiring ι with }
 #align comm_semiring.direct_sum_gcomm_semiring CommSemiring.directSumGCommSemiring
+-/
 
 end Uniform
 
Diff
@@ -96,7 +96,7 @@ variable (A : ι → Type _)
 
 /-- A graded version of `non_unital_non_assoc_semiring`. -/
 class GNonUnitalNonAssocSemiring [Add ι] [∀ i, AddCommMonoid (A i)] extends
-  GradedMonoid.GMul A where
+    GradedMonoid.GMul A where
   mul_zero : ∀ {i j} (a : A i), mul a (0 : A j) = 0
   zero_mul : ∀ {i j} (b : A j), mul (0 : A i) b = 0
   mul_add : ∀ {i j} (a : A i) (b c : A j), mul a (b + c) = mul a b + mul a c
@@ -111,7 +111,7 @@ variable (A : ι → Type _)
 
 /-- A graded version of `semiring`. -/
 class GSemiring [AddMonoid ι] [∀ i, AddCommMonoid (A i)] extends GNonUnitalNonAssocSemiring A,
-  GradedMonoid.GMonoid A where
+    GradedMonoid.GMonoid A where
   natCast : ℕ → A 0
   natCast_zero : nat_cast 0 = 0
   natCast_succ : ∀ n : ℕ, nat_cast (n + 1) = nat_cast n + GradedMonoid.GOne.one
@@ -119,7 +119,7 @@ class GSemiring [AddMonoid ι] [∀ i, AddCommMonoid (A i)] extends GNonUnitalNo
 
 /-- A graded version of `comm_semiring`. -/
 class GCommSemiring [AddCommMonoid ι] [∀ i, AddCommMonoid (A i)] extends GSemiring A,
-  GradedMonoid.GCommMonoid A
+    GradedMonoid.GCommMonoid A
 #align direct_sum.gcomm_semiring DirectSum.GCommSemiring
 
 /-- A graded version of `ring`. -/
Diff
@@ -215,34 +215,23 @@ variable [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A]
 
 open AddMonoidHom (flipHom coe_comp compHom_apply_apply flip_apply flipHom_apply)
 
-/- warning: direct_sum.one_mul clashes with [anonymous] -> [anonymous]
-Case conversion may be inaccurate. Consider using '#align direct_sum.one_mul [anonymous]ₓ'. -/
-#print [anonymous] /-
-private theorem [anonymous] (x : ⨁ i, A i) : 1 * x = x :=
+private theorem one_mul (x : ⨁ i, A i) : 1 * x = x :=
   by
   suffices mulHom A 1 = AddMonoidHom.id (⨁ i, A i) from AddMonoidHom.congr_fun this x
   apply add_hom_ext; intro i xi
   unfold One.one
   rw [mul_hom_of_of]
   exact of_eq_of_graded_monoid_eq (one_mul <| GradedMonoid.mk i xi)
--/
 
-/- warning: direct_sum.mul_one clashes with [anonymous] -> [anonymous]
-Case conversion may be inaccurate. Consider using '#align direct_sum.mul_one [anonymous]ₓ'. -/
-#print [anonymous] /-
-private theorem [anonymous] (x : ⨁ i, A i) : x * 1 = x :=
+private theorem mul_one (x : ⨁ i, A i) : x * 1 = x :=
   by
   suffices (mulHom A).flip 1 = AddMonoidHom.id (⨁ i, A i) from AddMonoidHom.congr_fun this x
   apply add_hom_ext; intro i xi
   unfold One.one
   rw [flip_apply, mul_hom_of_of]
   exact of_eq_of_graded_monoid_eq (mul_one <| GradedMonoid.mk i xi)
--/
 
-/- warning: direct_sum.mul_assoc clashes with [anonymous] -> [anonymous]
-Case conversion may be inaccurate. Consider using '#align direct_sum.mul_assoc [anonymous]ₓ'. -/
-#print [anonymous] /-
-private theorem [anonymous] (a b c : ⨁ i, A i) : a * b * c = a * (b * c) :=
+private theorem mul_assoc (a b c : ⨁ i, A i) : a * b * c = a * (b * c) :=
   by
   suffices
     (-- `λ a b c, a * b * c` as a bundled hom
@@ -259,7 +248,6 @@ private theorem [anonymous] (a b c : ⨁ i, A i) : a * b * c = a * (b * c) :=
   dsimp only [coe_comp, Function.comp_apply, comp_hom_apply_apply, flip_apply, flip_hom_apply]
   rw [mul_hom_of_of, mul_hom_of_of, mul_hom_of_of, mul_hom_of_of]
   exact of_eq_of_graded_monoid_eq (mul_assoc (GradedMonoid.mk ai ax) ⟨bi, bx⟩ ⟨ci, cx⟩)
--/
 
 #print DirectSum.semiring /-
 /-- The `semiring` structure derived from `gsemiring A`. -/
@@ -331,16 +319,12 @@ section CommSemiring
 
 variable [∀ i, AddCommMonoid (A i)] [AddCommMonoid ι] [GCommSemiring A]
 
-/- warning: direct_sum.mul_comm clashes with [anonymous] -> [anonymous]
-Case conversion may be inaccurate. Consider using '#align direct_sum.mul_comm [anonymous]ₓ'. -/
-#print [anonymous] /-
-private theorem [anonymous] (a b : ⨁ i, A i) : a * b = b * a :=
+private theorem mul_comm (a b : ⨁ i, A i) : a * b = b * a :=
   by
   suffices mulHom A = (mulHom A).flip from AddMonoidHom.congr_fun (AddMonoidHom.congr_fun this a) b
   apply add_hom_ext; intro ai ax; apply add_hom_ext; intro bi bx
   rw [AddMonoidHom.flip_apply, mul_hom_of_of, mul_hom_of_of]
   exact of_eq_of_graded_monoid_eq (gcomm_semiring.mul_comm ⟨ai, ax⟩ ⟨bi, bx⟩)
--/
 
 #print DirectSum.commSemiring /-
 /-- The `comm_semiring` structure derived from `gcomm_semiring A`. -/
@@ -678,11 +662,11 @@ def liftRingHom :
   invFun F :=
     ⟨fun i => (F : (⨁ i, A i) →+ R).comp (of _ i),
       by
-      simp only [AddMonoidHom.comp_apply, [anonymous]]
+      simp only [AddMonoidHom.comp_apply, RingHom.coe_addMonoidHom]
       rw [← F.map_one]
       rfl, fun i j ai aj =>
       by
-      simp only [AddMonoidHom.comp_apply, [anonymous]]
+      simp only [AddMonoidHom.comp_apply, RingHom.coe_addMonoidHom]
       rw [← F.map_mul, of_mul_of]⟩
   left_inv f := by
     ext (xi xv)
Diff
@@ -85,7 +85,7 @@ variable {ι : Type _} [DecidableEq ι]
 
 namespace DirectSum
 
-open DirectSum
+open scoped DirectSum
 
 /-! ### Typeclasses -/
 
@@ -302,7 +302,7 @@ theorem list_prod_ofFn_of_eq_dProd (n : ℕ) (fι : Fin n → ι) (fA : ∀ a, A
   rw [List.ofFn_eq_map, of_list_dprod]
 #align direct_sum.list_prod_of_fn_of_eq_dprod DirectSum.list_prod_ofFn_of_eq_dProd
 
-open BigOperators
+open scoped BigOperators
 
 #print DirectSum.mul_eq_dfinsupp_sum /-
 theorem mul_eq_dfinsupp_sum [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a' : ⨁ i, A i) :
@@ -726,7 +726,7 @@ instance Semiring.directSumGSemiring {R : Type _} [AddMonoid ι] [Semiring R] :
     natCast_succ := Nat.cast_succ }
 #align semiring.direct_sum_gsemiring Semiring.directSumGSemiring
 
-open DirectSum
+open scoped DirectSum
 
 -- To check `has_mul.ghas_mul_mul` matches
 example {R : Type _} [AddMonoid ι] [Semiring R] (i j : ι) (a b : R) :
Diff
@@ -94,12 +94,6 @@ section Defs
 
 variable (A : ι → Type _)
 
-/- warning: direct_sum.gnon_unital_non_assoc_semiring -> DirectSum.GNonUnitalNonAssocSemiring is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : Add.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)], Sort.{max (succ u1) (succ u2)}
-but is expected to have type
-  forall {ι : Type.{u1}} (_inst_1 : ι -> Type.{u2}) [A : Add.{u1} ι] [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (_inst_1 i)], Sort.{max (succ u1) (succ u2)}
-Case conversion may be inaccurate. Consider using '#align direct_sum.gnon_unital_non_assoc_semiring DirectSum.GNonUnitalNonAssocSemiringₓ'. -/
 /-- A graded version of `non_unital_non_assoc_semiring`. -/
 class GNonUnitalNonAssocSemiring [Add ι] [∀ i, AddCommMonoid (A i)] extends
   GradedMonoid.GMul A where
@@ -115,12 +109,6 @@ section Defs
 
 variable (A : ι → Type _)
 
-/- warning: direct_sum.gsemiring -> DirectSum.GSemiring is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : AddMonoid.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)], Sort.{max (succ u1) (succ u2)}
-but is expected to have type
-  forall {ι : Type.{u1}} (_inst_1 : ι -> Type.{u2}) [A : AddMonoid.{u1} ι] [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (_inst_1 i)], Sort.{max (succ u1) (succ u2)}
-Case conversion may be inaccurate. Consider using '#align direct_sum.gsemiring DirectSum.GSemiringₓ'. -/
 /-- A graded version of `semiring`. -/
 class GSemiring [AddMonoid ι] [∀ i, AddCommMonoid (A i)] extends GNonUnitalNonAssocSemiring A,
   GradedMonoid.GMonoid A where
@@ -129,23 +117,11 @@ class GSemiring [AddMonoid ι] [∀ i, AddCommMonoid (A i)] extends GNonUnitalNo
   natCast_succ : ∀ n : ℕ, nat_cast (n + 1) = nat_cast n + GradedMonoid.GOne.one
 #align direct_sum.gsemiring DirectSum.GSemiring
 
-/- warning: direct_sum.gcomm_semiring -> DirectSum.GCommSemiring is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : AddCommMonoid.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)], Sort.{max (succ u1) (succ u2)}
-but is expected to have type
-  forall {ι : Type.{u1}} (_inst_1 : ι -> Type.{u2}) [A : AddCommMonoid.{u1} ι] [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (_inst_1 i)], Sort.{max (succ u1) (succ u2)}
-Case conversion may be inaccurate. Consider using '#align direct_sum.gcomm_semiring DirectSum.GCommSemiringₓ'. -/
 /-- A graded version of `comm_semiring`. -/
 class GCommSemiring [AddCommMonoid ι] [∀ i, AddCommMonoid (A i)] extends GSemiring A,
   GradedMonoid.GCommMonoid A
 #align direct_sum.gcomm_semiring DirectSum.GCommSemiring
 
-/- warning: direct_sum.gring -> DirectSum.GRing is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : AddMonoid.{u1} ι] [_inst_3 : forall (i : ι), AddCommGroup.{u2} (A i)], Sort.{max (succ u1) (succ u2)}
-but is expected to have type
-  forall {ι : Type.{u1}} (_inst_1 : ι -> Type.{u2}) [A : AddMonoid.{u1} ι] [_inst_2 : forall (i : ι), AddCommGroup.{u2} (_inst_1 i)], Sort.{max (succ u1) (succ u2)}
-Case conversion may be inaccurate. Consider using '#align direct_sum.gring DirectSum.GRingₓ'. -/
 /-- A graded version of `ring`. -/
 class GRing [AddMonoid ι] [∀ i, AddCommGroup (A i)] extends GSemiring A where
   intCast : ℤ → A 0
@@ -153,21 +129,12 @@ class GRing [AddMonoid ι] [∀ i, AddCommGroup (A i)] extends GSemiring A where
   intCast_negSucc : ∀ n : ℕ, int_cast (-(n + 1 : ℕ)) = -nat_cast (n + 1 : ℕ)
 #align direct_sum.gring DirectSum.GRing
 
-/- warning: direct_sum.gcomm_ring -> DirectSum.GCommRing is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : AddCommMonoid.{u1} ι] [_inst_3 : forall (i : ι), AddCommGroup.{u2} (A i)], Sort.{max (succ u1) (succ u2)}
-but is expected to have type
-  forall {ι : Type.{u1}} (_inst_1 : ι -> Type.{u2}) [A : AddCommMonoid.{u1} ι] [_inst_2 : forall (i : ι), AddCommGroup.{u2} (_inst_1 i)], Sort.{max (succ u1) (succ u2)}
-Case conversion may be inaccurate. Consider using '#align direct_sum.gcomm_ring DirectSum.GCommRingₓ'. -/
 /-- A graded version of `comm_ring`. -/
 class GCommRing [AddCommMonoid ι] [∀ i, AddCommGroup (A i)] extends GRing A, GCommSemiring A
 #align direct_sum.gcomm_ring DirectSum.GCommRing
 
 end Defs
 
-/- warning: direct_sum.of_eq_of_graded_monoid_eq -> DirectSum.of_eq_of_gradedMonoid_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.of_eq_of_graded_monoid_eq DirectSum.of_eq_of_gradedMonoid_eqₓ'. -/
 theorem of_eq_of_gradedMonoid_eq {A : ι → Type _} [∀ i : ι, AddCommMonoid (A i)] {i j : ι} {a : A i}
     {b : A j} (h : GradedMonoid.mk i a = GradedMonoid.mk j b) :
     DirectSum.of A i a = DirectSum.of A j b :=
@@ -193,12 +160,6 @@ variable [Add ι] [∀ i, AddCommMonoid (A i)] [GNonUnitalNonAssocSemiring A]
 
 open AddMonoidHom (flip_apply coe_comp compHom_apply_apply)
 
-/- warning: direct_sum.gmul_hom -> DirectSum.gMulHom is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : Add.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_2 (fun (i : ι) => _inst_3 i)] {i : ι} {j : ι}, AddMonoidHom.{u2, u2} (A i) (AddMonoidHom.{u2, u2} (A j) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j))))) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{u2} (AddMonoidHom.{u2, u2} (A j) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j))))) (AddCommMonoid.toAddMonoid.{u2} (AddMonoidHom.{u2, u2} (A j) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j))))) (AddMonoidHom.addCommMonoid.{u2, u2} (A j) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_3 j))) (_inst_3 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)))))
-but is expected to have type
-  forall {ι : Type.{u1}} (_inst_1 : ι -> Type.{u2}) [A : Add.{u1} ι] [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (_inst_1 i)] [_inst_3 : DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι _inst_1 A (fun (i : ι) => _inst_2 i)] {_inst_4 : ι} {i : ι}, AddMonoidHom.{u2, u2} (_inst_1 _inst_4) (AddMonoidHom.{u2, u2} (_inst_1 i) (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (AddMonoid.toAddZeroClass.{u2} (_inst_1 i) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i))))) (AddMonoid.toAddZeroClass.{u2} (_inst_1 _inst_4) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 _inst_4) (_inst_2 _inst_4))) (AddMonoid.toAddZeroClass.{u2} (AddMonoidHom.{u2, u2} (_inst_1 i) (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (AddMonoid.toAddZeroClass.{u2} (_inst_1 i) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i))))) (AddCommMonoid.toAddMonoid.{u2} (AddMonoidHom.{u2, u2} (_inst_1 i) (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (AddMonoid.toAddZeroClass.{u2} (_inst_1 i) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i))))) (AddMonoidHom.addCommMonoid.{u2, u2} (_inst_1 i) (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (AddMonoid.toAddZeroClass.{u2} (_inst_1 i) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 i) (_inst_2 i))) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)))))
-Case conversion may be inaccurate. Consider using '#align direct_sum.gmul_hom DirectSum.gMulHomₓ'. -/
 /-- The piecewise multiplication from the `has_mul` instance, as a bundled homomorphism. -/
 @[simps]
 def gMulHom {i j} : A i →+ A j →+ A (i + j)
@@ -233,9 +194,6 @@ instance : NonUnitalNonAssocSemiring (⨁ i, A i) :=
 
 variable {A}
 
-/- warning: direct_sum.mul_hom_of_of -> DirectSum.mulHom_of_of is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.mul_hom_of_of DirectSum.mulHom_of_ofₓ'. -/
 theorem mulHom_of_of {i j} (a : A i) (b : A j) :
     mulHom A (of _ i a) (of _ j b) = of _ (i + j) (GradedMonoid.GMul.mul a b) :=
   by
@@ -244,9 +202,6 @@ theorem mulHom_of_of {i j} (a : A i) (b : A j) :
     comp_hom_apply_apply, coe_comp, Function.comp_apply, gmul_hom_apply_apply]
 #align direct_sum.mul_hom_of_of DirectSum.mulHom_of_of
 
-/- warning: direct_sum.of_mul_of -> DirectSum.of_mul_of is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.of_mul_of DirectSum.of_mul_ofₓ'. -/
 theorem of_mul_of {i j} (a : A i) (b : A j) :
     of _ i a * of _ j b = of _ (i + j) (GradedMonoid.GMul.mul a b) :=
   mulHom_of_of a b
@@ -323,9 +278,6 @@ instance semiring : Semiring (⨁ i, A i) :=
 #align direct_sum.semiring DirectSum.semiring
 -/
 
-/- warning: direct_sum.of_pow -> DirectSum.ofPow is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.of_pow DirectSum.ofPowₓ'. -/
 theorem ofPow {i} (a : A i) (n : ℕ) :
     of _ i a ^ n = of _ (n • i) (GradedMonoid.GMonoid.gnpow _ a) :=
   by
@@ -335,9 +287,6 @@ theorem ofPow {i} (a : A i) (n : ℕ) :
     exact of_eq_of_graded_monoid_eq (pow_succ (GradedMonoid.mk _ a) n).symm
 #align direct_sum.of_pow DirectSum.ofPow
 
-/- warning: direct_sum.of_list_dprod -> DirectSum.ofList_dProd is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.of_list_dprod DirectSum.ofList_dProdₓ'. -/
 theorem ofList_dProd {α} (l : List α) (fι : α → ι) (fA : ∀ a, A (fι a)) :
     of A _ (l.dProd fι fA) = (l.map fun a => of A (fι a) (fA a)).Prod :=
   by
@@ -348,9 +297,6 @@ theorem ofList_dProd {α} (l : List α) (fι : α → ι) (fA : ∀ a, A (fι a)
     rfl
 #align direct_sum.of_list_dprod DirectSum.ofList_dProd
 
-/- warning: direct_sum.list_prod_of_fn_of_eq_dprod -> DirectSum.list_prod_ofFn_of_eq_dProd is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.list_prod_of_fn_of_eq_dprod DirectSum.list_prod_ofFn_of_eq_dProdₓ'. -/
 theorem list_prod_ofFn_of_eq_dProd (n : ℕ) (fι : Fin n → ι) (fA : ∀ a, A (fι a)) :
     (List.ofFn fun a => of A (fι a) (fA a)).Prod = of A _ ((List.finRange n).dProd fι fA) := by
   rw [List.ofFn_eq_map, of_list_dprod]
@@ -483,9 +429,6 @@ section One
 
 variable [Zero ι] [GradedMonoid.GOne A] [∀ i, AddCommMonoid (A i)]
 
-/- warning: direct_sum.of_zero_one -> DirectSum.of_zero_one is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.of_zero_one DirectSum.of_zero_oneₓ'. -/
 @[simp]
 theorem of_zero_one : of _ 0 (1 : A 0) = 1 :=
   rfl
@@ -497,17 +440,11 @@ section Mul
 
 variable [AddZeroClass ι] [∀ i, AddCommMonoid (A i)] [GNonUnitalNonAssocSemiring A]
 
-/- warning: direct_sum.of_zero_smul -> DirectSum.of_zero_smul is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.of_zero_smul DirectSum.of_zero_smulₓ'. -/
 @[simp]
 theorem of_zero_smul {i} (a : A 0) (b : A i) : of _ _ (a • b) = of _ _ a * of _ _ b :=
   (of_eq_of_gradedMonoid_eq (GradedMonoid.mk_zero_smul a b)).trans (of_mul_of _ _).symm
 #align direct_sum.of_zero_smul DirectSum.of_zero_smul
 
-/- warning: direct_sum.of_zero_mul -> DirectSum.of_zero_mul is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.of_zero_mul DirectSum.of_zero_mulₓ'. -/
 @[simp]
 theorem of_zero_mul (a b : A 0) : of _ 0 (a * b) = of _ 0 a * of _ 0 b :=
   of_zero_smul A a b
@@ -534,9 +471,6 @@ section Semiring
 
 variable [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A]
 
-/- warning: direct_sum.of_zero_pow -> DirectSum.of_zero_pow is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.of_zero_pow DirectSum.of_zero_powₓ'. -/
 @[simp]
 theorem of_zero_pow (a : A 0) : ∀ n : ℕ, of _ 0 (a ^ n) = of _ 0 a ^ n
   | 0 => by rw [pow_zero, pow_zero, DirectSum.of_zero_one]
@@ -546,9 +480,6 @@ theorem of_zero_pow (a : A 0) : ∀ n : ℕ, of _ 0 (a ^ n) = of _ 0 a ^ n
 instance : NatCast (A 0) :=
   ⟨GSemiring.natCast⟩
 
-/- warning: direct_sum.of_nat_cast -> DirectSum.ofNatCast is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.of_nat_cast DirectSum.ofNatCastₓ'. -/
 @[simp]
 theorem ofNatCast (n : ℕ) : of A 0 n = n :=
   rfl
@@ -625,9 +556,6 @@ variable [∀ i, AddCommGroup (A i)] [AddMonoid ι] [GRing A]
 instance : IntCast (A 0) :=
   ⟨GRing.intCast⟩
 
-/- warning: direct_sum.of_int_cast -> DirectSum.ofIntCast is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.of_int_cast DirectSum.ofIntCastₓ'. -/
 @[simp]
 theorem ofIntCast (n : ℤ) : of A 0 n = n :=
   rfl
@@ -679,9 +607,6 @@ variable {R : Type _} [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A]
 
 variable {A}
 
-/- warning: direct_sum.ring_hom_ext' -> DirectSum.ringHom_ext' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.ring_hom_ext' DirectSum.ringHom_ext'ₓ'. -/
 /-- If two ring homomorphisms from `⨁ i, A i` are equal on each `of A i y`,
 then they are equal.
 
@@ -692,9 +617,6 @@ theorem ringHom_ext' ⦃F G : (⨁ i, A i) →+* R⦄
   RingHom.coe_addMonoidHom_injective <| DirectSum.addHom_ext' h
 #align direct_sum.ring_hom_ext' DirectSum.ringHom_ext'
 
-/- warning: direct_sum.ring_hom_ext -> DirectSum.ringHom_ext is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.ring_hom_ext DirectSum.ringHom_extₓ'. -/
 /-- Two `ring_hom`s out of a direct sum are equal if they agree on the generators. -/
 theorem ringHom_ext ⦃f g : (⨁ i, A i) →+* R⦄ (h : ∀ i x, f (of A i x) = g (of A i x)) : f = g :=
   ringHom_ext' fun i => AddMonoidHom.ext <| h i
@@ -729,18 +651,12 @@ def toSemiring (f : ∀ i, A i →+ R) (hone : f _ GradedMonoid.GOne.one = 1)
 #align direct_sum.to_semiring DirectSum.toSemiring
 -/
 
-/- warning: direct_sum.to_semiring_of -> DirectSum.toSemiring_of is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.to_semiring_of DirectSum.toSemiring_ofₓ'. -/
 @[simp]
 theorem toSemiring_of (f : ∀ i, A i →+ R) (hone hmul) (i : ι) (x : A i) :
     toSemiring f hone hmul (of _ i x) = f _ x :=
   toAddMonoid_of f i x
 #align direct_sum.to_semiring_of DirectSum.toSemiring_of
 
-/- warning: direct_sum.to_semiring_coe_add_monoid_hom -> DirectSum.toSemiring_coe_addMonoidHom is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align direct_sum.to_semiring_coe_add_monoid_hom DirectSum.toSemiring_coe_addMonoidHomₓ'. -/
 @[simp]
 theorem toSemiring_coe_addMonoidHom (f : ∀ i, A i →+ R) (hone hmul) :
     (toSemiring f hone hmul : (⨁ i, A i) →+ R) = toAddMonoid f :=
@@ -790,12 +706,6 @@ section Uniform
 
 variable (ι)
 
-/- warning: non_unital_non_assoc_semiring.direct_sum_gnon_unital_non_assoc_semiring -> NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring is a dubious translation:
-lean 3 declaration is
-  forall (ι : Type.{u1}) [_inst_1 : DecidableEq.{succ u1} ι] {R : Type.{u2}} [_inst_2 : AddMonoid.{u1} ι] [_inst_3 : NonUnitalNonAssocSemiring.{u2} R], DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => R) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_2)) (fun (i : ι) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_3)
-but is expected to have type
-  forall (ι : Type.{u1}) {_inst_1 : Type.{u2}} [R : AddMonoid.{u1} ι] [_inst_2 : NonUnitalNonAssocSemiring.{u2} _inst_1], DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι (fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6396 : ι) => _inst_1) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι R)) (fun (i : ι) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6396 : ι) => _inst_1) i) _inst_2)
-Case conversion may be inaccurate. Consider using '#align non_unital_non_assoc_semiring.direct_sum_gnon_unital_non_assoc_semiring NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiringₓ'. -/
 /-- A direct sum of copies of a `semiring` inherits the multiplication structure. -/
 instance NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring {R : Type _} [AddMonoid ι]
     [NonUnitalNonAssocSemiring R] : DirectSum.GNonUnitalNonAssocSemiring fun i : ι => R :=
@@ -806,12 +716,6 @@ instance NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring {R : Type
     add_mul := fun i j => add_mul }
 #align non_unital_non_assoc_semiring.direct_sum_gnon_unital_non_assoc_semiring NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring
 
-/- warning: semiring.direct_sum_gsemiring -> Semiring.directSumGSemiring is a dubious translation:
-lean 3 declaration is
-  forall (ι : Type.{u1}) [_inst_1 : DecidableEq.{succ u1} ι] {R : Type.{u2}} [_inst_2 : AddMonoid.{u1} ι] [_inst_3 : Semiring.{u2} R], DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => R) _inst_2 (fun (i : ι) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_3)))
-but is expected to have type
-  forall (ι : Type.{u1}) {_inst_1 : Type.{u2}} [R : AddMonoid.{u1} ι] [_inst_2 : Semiring.{u2} _inst_1], DirectSum.GSemiring.{u1, u2} ι (fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6437 : ι) => _inst_1) R (fun (i : ι) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6437 : ι) => _inst_1) i) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6437 : ι) => _inst_1) i) (Semiring.toNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6437 : ι) => _inst_1) i) _inst_2)))
-Case conversion may be inaccurate. Consider using '#align semiring.direct_sum_gsemiring Semiring.directSumGSemiringₓ'. -/
 /-- A direct sum of copies of a `semiring` inherits the multiplication structure. -/
 instance Semiring.directSumGSemiring {R : Type _} [AddMonoid ι] [Semiring R] :
     DirectSum.GSemiring fun i : ι => R :=
@@ -829,12 +733,6 @@ example {R : Type _} [AddMonoid ι] [Semiring R] (i j : ι) (a b : R) :
     (DirectSum.of _ i a * DirectSum.of _ j b : ⨁ i, R) = DirectSum.of _ (i + j) (a * b) := by
   rw [DirectSum.of_mul_of, Mul.gMul_mul]
 
-/- warning: comm_semiring.direct_sum_gcomm_semiring -> CommSemiring.directSumGCommSemiring is a dubious translation:
-lean 3 declaration is
-  forall (ι : Type.{u1}) [_inst_1 : DecidableEq.{succ u1} ι] {R : Type.{u2}} [_inst_2 : AddCommMonoid.{u1} ι] [_inst_3 : CommSemiring.{u2} R], DirectSum.GCommSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => R) _inst_2 (fun (i : ι) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))))
-but is expected to have type
-  forall (ι : Type.{u1}) {_inst_1 : Type.{u2}} [R : AddCommMonoid.{u1} ι] [_inst_2 : CommSemiring.{u2} _inst_1], DirectSum.GCommSemiring.{u1, u2} ι (fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6607 : ι) => _inst_1) R (fun (i : ι) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6607 : ι) => _inst_1) i) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6607 : ι) => _inst_1) i) (Semiring.toNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6607 : ι) => _inst_1) i) (CommSemiring.toSemiring.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6607 : ι) => _inst_1) i) _inst_2))))
-Case conversion may be inaccurate. Consider using '#align comm_semiring.direct_sum_gcomm_semiring CommSemiring.directSumGCommSemiringₓ'. -/
 /-- A direct sum of copies of a `comm_semiring` inherits the commutative multiplication structure.
 -/
 instance CommSemiring.directSumGCommSemiring {R : Type _} [AddCommMonoid ι] [CommSemiring R] :
Diff
@@ -319,9 +319,7 @@ instance semiring : Semiring (⨁ i, A i) :=
     mul_assoc := mul_assoc A
     natCast := fun n => of _ _ (GSemiring.natCast n)
     natCast_zero := by rw [gsemiring.nat_cast_zero, map_zero]
-    natCast_succ := fun n => by
-      rw [gsemiring.nat_cast_succ, map_add]
-      rfl }
+    natCast_succ := fun n => by rw [gsemiring.nat_cast_succ, map_add]; rfl }
 #align direct_sum.semiring DirectSum.semiring
 -/
 
Diff
@@ -166,10 +166,7 @@ class GCommRing [AddCommMonoid ι] [∀ i, AddCommGroup (A i)] extends GRing A,
 end Defs
 
 /- warning: direct_sum.of_eq_of_graded_monoid_eq -> DirectSum.of_eq_of_gradedMonoid_eq is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] {i : ι} {j : ι} {a : A i} {b : A j}, (Eq.{max (succ u1) (succ u2)} (GradedMonoid.{u1, u2} ι (fun {i : ι} => A i)) (GradedMonoid.mk.{u1, u2} ι (fun {i : ι} => A i) i a) (GradedMonoid.mk.{u1, u2} ι (fun {i : ι} => A i) j b)) -> (Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) a) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) ((fun (i : ι) => _inst_2 i) j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) ((fun (i : ι) => _inst_2 i) j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A j) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) ((fun (i : ι) => _inst_2 i) j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) j) b))
-but is expected to have type
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] {i : ι} {j : ι} {a : A i} {b : A j}, (Eq.{max (succ u1) (succ u2)} (GradedMonoid.{u1, u2} ι A) (GradedMonoid.mk.{u1, u2} ι A i a) (GradedMonoid.mk.{u1, u2} ι A j b)) -> (Eq.{max (succ u1) (succ u2)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (AddMonoidHom.{u2, max u2 u1} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (AddMonoidHom.{u2, max u2 u1} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u2} (A i) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u2, max u1 u2} (AddMonoidHom.{u2, max u2 u1} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) a) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (AddMonoidHom.{u2, max u2 u1} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A j) (fun (_x : A j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (AddMonoidHom.{u2, max u2 u1} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u2} (A j) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j)))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u2, max u1 u2} (AddMonoidHom.{u2, max u2 u1} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) j) b))
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.of_eq_of_graded_monoid_eq DirectSum.of_eq_of_gradedMonoid_eqₓ'. -/
 theorem of_eq_of_gradedMonoid_eq {A : ι → Type _} [∀ i : ι, AddCommMonoid (A i)] {i j : ι} {a : A i}
     {b : A j} (h : GradedMonoid.mk i a = GradedMonoid.mk j b) :
@@ -237,10 +234,7 @@ instance : NonUnitalNonAssocSemiring (⨁ i, A i) :=
 variable {A}
 
 /- warning: direct_sum.mul_hom_of_of -> DirectSum.mulHom_of_of is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} [_inst_2 : Add.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_2 (fun (i : ι) => _inst_3 i)] {i : ι} {j : ι} (a : A i) (b : A j), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (fun (_x : AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) => (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))) (AddMonoidHom.hasCoeToFun.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddCommMonoid.toAddMonoid.{max u1 u2} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddMonoidHom.addCommMonoid.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))))) (fun (_x : AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddCommMonoid.toAddMonoid.{max u1 u2} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddMonoidHom.addCommMonoid.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))))) => (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) -> (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))))) (AddMonoidHom.hasCoeToFun.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddCommMonoid.toAddMonoid.{max u1 u2} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddMonoidHom.addCommMonoid.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))))) (DirectSum.mulHom.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_2 (fun (i : ι) => _inst_3 i) _inst_4) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_3 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_3 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_3 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i) i) a)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) ((fun (i : ι) => _inst_3 i) j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) ((fun (i : ι) => _inst_3 i) j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) => (A j) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) ((fun (i : ι) => _inst_3 i) j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {j : ι} => A j) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i) j) b)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) ((fun (i : ι) => _inst_3 i) (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) ((fun (i : ι) => _inst_3 i) (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) => (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) ((fun (i : ι) => _inst_3 i) (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i) (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (GradedMonoid.GMul.mul.{u1, u2} ι (fun {i : ι} => A i) _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGhasMul.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) _inst_2 (fun (i : ι) => _inst_3 i) _inst_4) i j a b))
-but is expected to have type
-  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] {A : ι -> Type.{u1}} [_inst_2 : Add.{u2} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u2, u1} ι A _inst_2 (fun (i : ι) => _inst_3 i)] {i : ι} {j : ι} (a : A i) (b : A j), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (fun (a : A j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A j) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) j) b)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (fun (a : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (fun (_x : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (fun (a : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (fun (a : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHom.addCommMonoid.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (fun (_x : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) _x) (AddHomClass.toFunLike.{max u2 u1, max u2 u1, max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHom.addCommMonoid.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddZeroClass.toAdd.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHom.addCommMonoid.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, max u2 u1, max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHom.addCommMonoid.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHom.addCommMonoid.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHom.addMonoidHomClass.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHom.addCommMonoid.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))))))) (DirectSum.mulHom.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_2 (fun (i : ι) => _inst_3 i) _inst_4) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) a)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (fun (_x : A j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A j) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) j) b)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (fun (_x : A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (GradedMonoid.GMul.mul.{u2, u1} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u2, u1} ι A _inst_2 (fun (i : ι) => _inst_3 i) _inst_4) i j a b))
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.mul_hom_of_of DirectSum.mulHom_of_ofₓ'. -/
 theorem mulHom_of_of {i j} (a : A i) (b : A j) :
     mulHom A (of _ i a) (of _ j b) = of _ (i + j) (GradedMonoid.GMul.mul a b) :=
@@ -251,10 +245,7 @@ theorem mulHom_of_of {i j} (a : A i) (b : A j) :
 #align direct_sum.mul_hom_of_of DirectSum.mulHom_of_of
 
 /- warning: direct_sum.of_mul_of -> DirectSum.of_mul_of is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} [_inst_2 : Add.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_2 (fun (i : ι) => _inst_3 i)] {i : ι} {j : ι} (a : A i) (b : A j), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instHMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (Distrib.toHasMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.nonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_2 (fun (i : ι) => _inst_3 i) _inst_4)))) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) (fun (i : ι) => _inst_3 i) i) a) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A j) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {j : ι} => A j) (fun (i : ι) => _inst_3 i) j) b)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) (fun (i : ι) => _inst_3 i) (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (GradedMonoid.GMul.mul.{u1, u2} ι (fun {i : ι} => A i) _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGhasMul.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) _inst_2 (fun (i : ι) => _inst_3 i) _inst_4) i j a b))
-but is expected to have type
-  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] {A : ι -> Type.{u1}} [_inst_2 : Add.{u2} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u2, u1} ι A _inst_2 (fun (i : ι) => _inst_3 i)] {i : ι} {j : ι} (a : A i) (b : A j), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) b) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (instHMul.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (DirectSum.instNonUnitalNonAssocSemiringDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_2 (fun (i : ι) => _inst_3 i) _inst_4))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) a) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (fun (_x : A j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A j) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) j) b)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (fun (_x : A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (GradedMonoid.GMul.mul.{u2, u1} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u2, u1} ι A _inst_2 (fun (i : ι) => _inst_3 i) _inst_4) i j a b))
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.of_mul_of DirectSum.of_mul_ofₓ'. -/
 theorem of_mul_of {i j} (a : A i) (b : A j) :
     of _ i a * of _ j b = of _ (i + j) (GradedMonoid.GMul.mul a b) :=
@@ -279,7 +270,6 @@ private theorem [anonymous] (x : ⨁ i, A i) : 1 * x = x :=
   unfold One.one
   rw [mul_hom_of_of]
   exact of_eq_of_graded_monoid_eq (one_mul <| GradedMonoid.mk i xi)
-#align direct_sum.one_mul [anonymous]
 -/
 
 /- warning: direct_sum.mul_one clashes with [anonymous] -> [anonymous]
@@ -292,7 +282,6 @@ private theorem [anonymous] (x : ⨁ i, A i) : x * 1 = x :=
   unfold One.one
   rw [flip_apply, mul_hom_of_of]
   exact of_eq_of_graded_monoid_eq (mul_one <| GradedMonoid.mk i xi)
-#align direct_sum.mul_one [anonymous]
 -/
 
 /- warning: direct_sum.mul_assoc clashes with [anonymous] -> [anonymous]
@@ -315,7 +304,6 @@ private theorem [anonymous] (a b c : ⨁ i, A i) : a * b * c = a * (b * c) :=
   dsimp only [coe_comp, Function.comp_apply, comp_hom_apply_apply, flip_apply, flip_hom_apply]
   rw [mul_hom_of_of, mul_hom_of_of, mul_hom_of_of, mul_hom_of_of]
   exact of_eq_of_graded_monoid_eq (mul_assoc (GradedMonoid.mk ai ax) ⟨bi, bx⟩ ⟨ci, cx⟩)
-#align direct_sum.mul_assoc [anonymous]
 -/
 
 #print DirectSum.semiring /-
@@ -338,10 +326,7 @@ instance semiring : Semiring (⨁ i, A i) :=
 -/
 
 /- warning: direct_sum.of_pow -> DirectSum.ofPow is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] {i : ι} (a : A i) (n : Nat), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (HPow.hPow.{max u1 u2, 0, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) Nat (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instHPow.{max u1 u2, 0} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) Nat (Monoid.Pow.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (MonoidWithZero.toMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toMonoidWithZero.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))))) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) (fun (i : ι) => _inst_2 i) i) a) n) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (AddCommMonoid.toAddMonoid.{u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (_inst_2 (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (AddCommMonoid.toAddMonoid.{u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (_inst_2 (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) => (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (AddCommMonoid.toAddMonoid.{u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (_inst_2 (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) (fun (i : ι) => _inst_2 i) (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (GradedMonoid.GMonoid.gnpow.{u1, u2} ι (fun {i : ι} => A i) _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) n i a))
-but is expected to have type
-  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i)] {i : ι} (a : A i) (n : Nat), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (HPow.hPow.{max u2 u1, 0, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (instHPow.{max u2 u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) Nat (Monoid.Pow.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (MonoidWithZero.toMonoid.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (Semiring.toMonoidWithZero.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (DirectSum.semiring.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) a) n) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (AddCommMonoid.toAddMonoid.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (_inst_2 (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (fun (_x : A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (AddCommMonoid.toAddMonoid.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (_inst_2 (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (AddMonoid.toAddZeroClass.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (AddCommMonoid.toAddMonoid.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (_inst_2 (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (AddCommMonoid.toAddMonoid.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (_inst_2 (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (AddCommMonoid.toAddMonoid.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (_inst_2 (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (AddCommMonoid.toAddMonoid.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (_inst_2 (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (GradedMonoid.GMonoid.gnpow.{u2, u1} ι A _inst_3 (DirectSum.GSemiring.toGMonoid.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) n i a))
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.of_pow DirectSum.ofPowₓ'. -/
 theorem ofPow {i} (a : A i) (n : ℕ) :
     of _ i a ^ n = of _ (n • i) (GradedMonoid.GMonoid.gnpow _ a) :=
@@ -353,10 +338,7 @@ theorem ofPow {i} (a : A i) (n : ℕ) :
 #align direct_sum.of_pow DirectSum.ofPow
 
 /- warning: direct_sum.of_list_dprod -> DirectSum.ofList_dProd is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] {α : Type.{u3}} (l : List.{u3} α) (fι : α -> ι) (fA : forall (a : α), A (fι a)), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) ((fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) ((fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) ((fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) (List.dProd.{u1, u3, u2} ι α A _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) l fι fA)) (List.prod.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (Distrib.toHasMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.nonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) (DirectSum.GSemiring.toGnonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_4)))) (DirectSum.hasOne.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (GradedMonoid.GMonoid.toGhasOne.{u1, u2} ι (fun (i : ι) => A i) _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (List.map.{u3, max u1 u2} α (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (fun (a : α) => coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (fι a)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (fι a)) (AddCommMonoid.toAddMonoid.{u2} (A (fι a)) ((fun (i : ι) => _inst_2 i) (fι a)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (fι a)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (fι a)) (AddCommMonoid.toAddMonoid.{u2} (A (fι a)) ((fun (i : ι) => _inst_2 i) (fι a)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A (fι a)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (fι a)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (fι a)) (AddCommMonoid.toAddMonoid.{u2} (A (fι a)) ((fun (i : ι) => _inst_2 i) (fι a)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (fι a)) (fA a)) l))
-but is expected to have type
-  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i)] {α : Type.{u3}} (l : List.{u3} α) (fι : α -> ι) (fA : forall (a : α), A (fι a)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (List.dProd.{u2, u3, u1} ι α A _inst_3 (DirectSum.GSemiring.toGMonoid.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) l fι fA)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (_inst_2 (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (fun (_x : A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (_inst_2 (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (_inst_2 (List.dProdIndex.{u2, u3} ι α _inst_3 l fι))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (_inst_2 (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (_inst_2 (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (_inst_2 (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (List.dProd.{u2, u3, u1} ι α A _inst_3 (DirectSum.GSemiring.toGMonoid.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) l fι fA)) (List.prod.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.instNonUnitalNonAssocSemiringDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toAdd.{u2} ι (AddMonoid.toAddZeroClass.{u2} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u2, u1} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (DirectSum.instOneDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddMonoid.toZero.{u2} ι _inst_3) (DirectSum.GSemiring.toGOne.{u2, u1} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) (fun (i : ι) => _inst_2 i)) (List.map.{u3, max u2 u1} α (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (fun (a : α) => FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (fι a)) (fun (_x : A (fι a)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (fι a)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (fι a)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (fι a)) (fA a)) l))
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.of_list_dprod DirectSum.ofList_dProdₓ'. -/
 theorem ofList_dProd {α} (l : List α) (fι : α → ι) (fA : ∀ a, A (fι a)) :
     of A _ (l.dProd fι fA) = (l.map fun a => of A (fι a) (fA a)).Prod :=
@@ -369,10 +351,7 @@ theorem ofList_dProd {α} (l : List α) (fι : α → ι) (fA : ∀ a, A (fι a)
 #align direct_sum.of_list_dprod DirectSum.ofList_dProd
 
 /- warning: direct_sum.list_prod_of_fn_of_eq_dprod -> DirectSum.list_prod_ofFn_of_eq_dProd is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] (n : Nat) (fι : (Fin n) -> ι) (fA : forall (a : Fin n), A (fι a)), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (List.prod.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (Distrib.toHasMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.nonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) (DirectSum.GSemiring.toGnonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_4)))) (DirectSum.hasOne.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (GradedMonoid.GMonoid.toGhasOne.{u1, u2} ι (fun (i : ι) => A i) _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (List.ofFn.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) n (fun (a : Fin n) => coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (fι a)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (fι a)) (AddCommMonoid.toAddMonoid.{u2} (A (fι a)) ((fun (i : ι) => _inst_2 i) (fι a)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (fι a)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (fι a)) (AddCommMonoid.toAddMonoid.{u2} (A (fι a)) ((fun (i : ι) => _inst_2 i) (fι a)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A (fι a)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (fι a)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (fι a)) (AddCommMonoid.toAddMonoid.{u2} (A (fι a)) ((fun (i : ι) => _inst_2 i) (fι a)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (fι a)) (fA a)))) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) ((fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) ((fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) ((fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (List.dProd.{u1, 0, u2} ι (Fin n) A _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) (List.finRange n) fι fA))
-but is expected to have type
-  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i)] (n : Nat) (fι : (Fin n) -> ι) (fA : forall (a : Fin n), A (fι a)), Eq.{max (succ u2) (succ u1)} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (List.prod.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.instNonUnitalNonAssocSemiringDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toAdd.{u2} ι (AddMonoid.toAddZeroClass.{u2} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u2, u1} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (DirectSum.instOneDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddMonoid.toZero.{u2} ι _inst_3) (DirectSum.GSemiring.toGOne.{u2, u1} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) (fun (i : ι) => _inst_2 i)) (List.ofFn.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) n (fun (a : Fin n) => FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (fι a)) (fun (_x : A (fι a)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (fι a)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (fι a)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (fι a)) (fA a)))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (_inst_2 (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (fun (_x : A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (_inst_2 (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (_inst_2 (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (_inst_2 (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (_inst_2 (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (_inst_2 (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (List.dProd.{u2, 0, u1} ι (Fin n) A _inst_3 (DirectSum.GSemiring.toGMonoid.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) (List.finRange n) fι fA))
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.list_prod_of_fn_of_eq_dprod DirectSum.list_prod_ofFn_of_eq_dProdₓ'. -/
 theorem list_prod_ofFn_of_eq_dProd (n : ℕ) (fι : Fin n → ι) (fA : ∀ a, A (fι a)) :
     (List.ofFn fun a => of A (fι a) (fA a)).Prod = of A _ ((List.finRange n).dProd fι fA) := by
@@ -417,7 +396,6 @@ private theorem [anonymous] (a b : ⨁ i, A i) : a * b = b * a :=
   apply add_hom_ext; intro ai ax; apply add_hom_ext; intro bi bx
   rw [AddMonoidHom.flip_apply, mul_hom_of_of, mul_hom_of_of]
   exact of_eq_of_graded_monoid_eq (gcomm_semiring.mul_comm ⟨ai, ax⟩ ⟨bi, bx⟩)
-#align direct_sum.mul_comm [anonymous]
 -/
 
 #print DirectSum.commSemiring /-
@@ -508,10 +486,7 @@ section One
 variable [Zero ι] [GradedMonoid.GOne A] [∀ i, AddCommMonoid (A i)]
 
 /- warning: direct_sum.of_zero_one -> DirectSum.of_zero_one is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : Zero.{u1} ι] [_inst_3 : GradedMonoid.GOne.{u1, u2} ι A _inst_2] [_inst_4 : forall (i : ι), AddCommMonoid.{u2} (A i)], Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (_inst_4 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (_inst_4 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (_inst_4 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_4 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (OfNat.ofNat.{u2} (A (Zero.zero.{u1} ι _inst_2)) 1 (OfNat.mk.{u2} (A (Zero.zero.{u1} ι _inst_2)) 1 (One.one.{u2} (A (Zero.zero.{u1} ι _inst_2)) (GradedMonoid.GradeZero.one.{u1, u2} ι A _inst_2 _inst_3))))) (OfNat.ofNat.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) 1 (OfNat.mk.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) 1 (One.one.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (DirectSum.hasOne.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_2 _inst_3 (fun (i : ι) => _inst_4 i)))))
-but is expected to have type
-  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : Zero.{u2} ι] [_inst_3 : GradedMonoid.GOne.{u2, u1} ι A _inst_2] [_inst_4 : forall (i : ι), AddCommMonoid.{u1} (A i)], Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (OfNat.ofNat.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) 1 (One.toOfNat1.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (GradedMonoid.GradeZero.one.{u2, u1} ι A _inst_2 _inst_3)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (_inst_4 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (_inst_4 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (_inst_4 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2)))))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (_inst_4 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (_inst_4 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (_inst_4 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_4 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (OfNat.ofNat.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) 1 (One.toOfNat1.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (GradedMonoid.GradeZero.one.{u2, u1} ι A _inst_2 _inst_3)))) (OfNat.ofNat.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (OfNat.ofNat.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) 1 (One.toOfNat1.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (GradedMonoid.GradeZero.one.{u2, u1} ι A _inst_2 _inst_3)))) 1 (One.toOfNat1.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (OfNat.ofNat.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) 1 (One.toOfNat1.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (GradedMonoid.GradeZero.one.{u2, u1} ι A _inst_2 _inst_3)))) (DirectSum.instOneDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_2 _inst_3 (fun (i : ι) => _inst_4 i))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.of_zero_one DirectSum.of_zero_oneₓ'. -/
 @[simp]
 theorem of_zero_one : of _ 0 (1 : A 0) = 1 :=
@@ -525,10 +500,7 @@ section Mul
 variable [AddZeroClass ι] [∀ i, AddCommMonoid (A i)] [GNonUnitalNonAssocSemiring A]
 
 /- warning: direct_sum.of_zero_smul -> DirectSum.of_zero_smul is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : AddZeroClass.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (AddZeroClass.toHasAdd.{u1} ι _inst_2) (fun (i : ι) => _inst_3 i)] {i : ι} (a : A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (b : A i), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) (SMul.smul.{u2, u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (A i) (GradedMonoid.GradeZero.smul.{u1, u2} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGhasMul.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (AddZeroClass.toHasAdd.{u1} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4) i) a b)) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instHMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (Distrib.toHasMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.nonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4)))) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) a) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) b))
-but is expected to have type
-  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : AddZeroClass.{u2} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u2, u1} ι A (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i)] {i : ι} (a : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (b : A i), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (HSMul.hSMul.{u1, u1, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A i) (A i) (instHSMul.{u1, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A i) (GradedMonoid.GradeZero.smul.{u2, u1} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u2, u1} ι A (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4) i)) a b)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i)))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) (HSMul.hSMul.{u1, u1, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A i) (A i) (instHSMul.{u1, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A i) (GradedMonoid.GradeZero.smul.{u2, u1} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u2, u1} ι A (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4) i)) a b)) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) b) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (instHMul.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (DirectSum.instNonUnitalNonAssocSemiringDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2))))))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i)))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) b))
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.of_zero_smul DirectSum.of_zero_smulₓ'. -/
 @[simp]
 theorem of_zero_smul {i} (a : A 0) (b : A i) : of _ _ (a • b) = of _ _ a * of _ _ b :=
@@ -536,10 +508,7 @@ theorem of_zero_smul {i} (a : A 0) (b : A i) : of _ _ (a • b) = of _ _ a * of
 #align direct_sum.of_zero_smul DirectSum.of_zero_smul
 
 /- warning: direct_sum.of_zero_mul -> DirectSum.of_zero_mul is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : AddZeroClass.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (AddZeroClass.toHasAdd.{u1} ι _inst_2) (fun (i : ι) => _inst_3 i)] (a : A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (b : A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (HMul.hMul.{u2, u2, u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (instHMul.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (GradedMonoid.GradeZero.mul.{u1, u2} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGhasMul.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (AddZeroClass.toHasAdd.{u1} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4))) a b)) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instHMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (Distrib.toHasMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.nonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4)))) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) a) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) b))
-but is expected to have type
-  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : AddZeroClass.{u2} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u2, u1} ι A (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i)] (a : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (b : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (HMul.hMul.{u1, u1, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (instHMul.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (GradedMonoid.GradeZero.mul.{u2, u1} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u2, u1} ι A (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4))) a b)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2))))))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (HMul.hMul.{u1, u1, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (instHMul.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (GradedMonoid.GradeZero.mul.{u2, u1} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u2, u1} ι A (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4))) a b)) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) b) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (instHMul.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (DirectSum.instNonUnitalNonAssocSemiringDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2))))))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2))))))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) b))
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.of_zero_mul DirectSum.of_zero_mulₓ'. -/
 @[simp]
 theorem of_zero_mul (a b : A 0) : of _ 0 (a * b) = of _ 0 a * of _ 0 b :=
@@ -568,10 +537,7 @@ section Semiring
 variable [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A]
 
 /- warning: direct_sum.of_zero_pow -> DirectSum.of_zero_pow is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] (a : A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (n : Nat), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (HPow.hPow.{u2, 0, u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) Nat (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (instHPow.{u2, 0} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) Nat (GradedMonoid.Nat.hasPow.{u1, u2} ι A _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) a n)) (HPow.hPow.{max u1 u2, 0, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) Nat (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instHPow.{max u1 u2, 0} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) Nat (Monoid.Pow.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (MonoidWithZero.toMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toMonoidWithZero.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))))) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) a) n)
-but is expected to have type
-  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i)] (a : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (n : Nat), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (HPow.hPow.{u1, 0, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) Nat (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (instHPow.{u1, 0} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) Nat (GradedMonoid.instPowOfNatToOfNat0ToZeroNat.{u2, u1} ι A _inst_3 (DirectSum.GSemiring.toGMonoid.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) a n)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (HPow.hPow.{u1, 0, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) Nat (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (instHPow.{u1, 0} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) Nat (GradedMonoid.instPowOfNatToOfNat0ToZeroNat.{u2, u1} ι A _inst_3 (DirectSum.GSemiring.toGMonoid.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) a n)) (HPow.hPow.{max u2 u1, 0, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (instHPow.{max u2 u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) Nat (Monoid.Pow.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (MonoidWithZero.toMonoid.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (Semiring.toMonoidWithZero.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (DirectSum.semiring.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) a) n)
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.of_zero_pow DirectSum.of_zero_powₓ'. -/
 @[simp]
 theorem of_zero_pow (a : A 0) : ∀ n : ℕ, of _ 0 (a ^ n) = of _ 0 a ^ n
@@ -583,10 +549,7 @@ instance : NatCast (A 0) :=
   ⟨GSemiring.natCast⟩
 
 /- warning: direct_sum.of_nat_cast -> DirectSum.ofNatCast is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] (n : Nat), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (HasLiftT.mk.{1, succ u2} Nat (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (CoeTCₓ.coe.{1, succ u2} Nat (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (Nat.castCoe.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.hasNatCast.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) n)) ((fun (a : Type) (b : Type.{max u1 u2}) [self : HasLiftT.{1, succ (max u1 u2)} a b] => self.0) Nat (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (HasLiftT.mk.{1, succ (max u1 u2)} Nat (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (CoeTCₓ.coe.{1, succ (max u1 u2)} Nat (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (Nat.castCoe.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoidWithOne.toNatCast.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_3 _inst_4)))))))) n)
-but is expected to have type
-  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i)] (n : Nat), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Nat.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instNatCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (Nat.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instNatCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (Nat.cast.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Nat.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instNatCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (Semiring.toNatCast.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Nat.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instNatCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (DirectSum.semiring.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) n)
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.of_nat_cast DirectSum.ofNatCastₓ'. -/
 @[simp]
 theorem ofNatCast (n : ℕ) : of A 0 n = n :=
@@ -665,10 +628,7 @@ instance : IntCast (A 0) :=
   ⟨GRing.intCast⟩
 
 /- warning: direct_sum.of_int_cast -> DirectSum.ofIntCast is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : forall (i : ι), AddCommGroup.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GRing.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] (n : Int), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Int (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (HasLiftT.mk.{1, succ u2} Int (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (CoeTCₓ.coe.{1, succ u2} Int (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (Int.castCoe.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.hasIntCast.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) n)) ((fun (a : Type) (b : Type.{max u1 u2}) [self : HasLiftT.{1, succ (max u1 u2)} a b] => self.0) Int (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (HasLiftT.mk.{1, succ (max u1 u2)} Int (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (CoeTCₓ.coe.{1, succ (max u1 u2)} Int (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (Int.castCoe.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddGroupWithOne.toHasIntCast.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddCommGroupWithOne.toAddGroupWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (Ring.toAddCommGroupWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (DirectSum.ring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))))))) n)
-but is expected to have type
-  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : forall (i : ι), AddCommGroup.{u1} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GRing.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i)] (n : Int), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (Int.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instIntCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommGroup.toAddCommMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i)))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommGroup.toAddCommMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i)))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommGroup.toAddCommMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommGroup.toAddCommMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i)))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommGroup.toAddCommMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommGroup.toAddCommMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i)))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i)) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (Int.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instIntCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (Int.cast.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (Int.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instIntCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (Ring.toIntCast.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (Int.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instIntCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (DirectSum.ring.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) n)
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.of_int_cast DirectSum.ofIntCastₓ'. -/
 @[simp]
 theorem ofIntCast (n : ℤ) : of A 0 n = n :=
@@ -722,10 +682,7 @@ variable {R : Type _} [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A]
 variable {A}
 
 /- warning: direct_sum.ring_hom_ext' -> DirectSum.ringHom_ext' is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} {R : Type.{u3}} [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u3} R] {{F : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)}} {{G : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)}}, (forall (i : ι), Eq.{max (succ u3) (succ u2)} (AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (AddMonoidHom.comp.{u2, max u1 u2, u3} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) ((fun (a : Sort.{max (succ (max u1 u2)) (succ u3)}) (b : Sort.{max (succ u3) (succ (max u1 u2))}) [self : HasLiftT.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} a b] => self.0) (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (HasLiftT.mk.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (CoeTCₓ.coe.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (AddMonoidHom.hasCoeT.{max u1 u2, u3, max (max u1 u2) u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) (RingHomClass.toAddMonoidHomClass.{max (max u1 u2) u3, max u1 u2, u3} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5) (RingHom.ringHomClass.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) F) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i)) (AddMonoidHom.comp.{u2, max u1 u2, u3} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) ((fun (a : Sort.{max (succ (max u1 u2)) (succ u3)}) (b : Sort.{max (succ u3) (succ (max u1 u2))}) [self : HasLiftT.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} a b] => self.0) (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (HasLiftT.mk.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (CoeTCₓ.coe.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (AddMonoidHom.hasCoeT.{max u1 u2, u3, max (max u1 u2) u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) (RingHomClass.toAddMonoidHomClass.{max (max u1 u2) u3, max u1 u2, u3} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5) (RingHom.ringHomClass.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) G) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i))) -> (Eq.{max (succ (max u1 u2)) (succ u3)} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) F G)
-but is expected to have type
-  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] {A : ι -> Type.{u3}} {R : Type.{u1}} [_inst_2 : forall (i : ι), AddCommMonoid.{u3} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u3} ι A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u1} R] {{F : RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)}} {{G : RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)}}, (forall (i : ι), Eq.{max (succ u3) (succ u1)} (AddMonoidHom.{u3, u1} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5)))))) (AddMonoidHom.comp.{u3, max u2 u3, u1} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) (AddMonoidHomClass.toAddMonoidHom.{max u2 u3, u1, max (max u2 u3) u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) (RingHomClass.toAddMonoidHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5) (RingHom.instRingHomClassRingHom.{max u2 u3, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5))) F) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i)) (AddMonoidHom.comp.{u3, max u2 u3, u1} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) (AddMonoidHomClass.toAddMonoidHom.{max u2 u3, u1, max (max u2 u3) u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) (RingHomClass.toAddMonoidHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5) (RingHom.instRingHomClassRingHom.{max u2 u3, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5))) G) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i))) -> (Eq.{max (max (succ u2) (succ u3)) (succ u1)} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) F G)
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.ring_hom_ext' DirectSum.ringHom_ext'ₓ'. -/
 /-- If two ring homomorphisms from `⨁ i, A i` are equal on each `of A i y`,
 then they are equal.
@@ -738,10 +695,7 @@ theorem ringHom_ext' ⦃F G : (⨁ i, A i) →+* R⦄
 #align direct_sum.ring_hom_ext' DirectSum.ringHom_ext'
 
 /- warning: direct_sum.ring_hom_ext -> DirectSum.ringHom_ext is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} {R : Type.{u3}} [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u3} R] {{f : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)}} {{g : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)}}, (forall (i : ι) (x : A i), Eq.{succ u3} R (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (fun (_x : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) => (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) -> R) (RingHom.hasCoeToFun.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) f (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (fun (_x : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) => (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) -> R) (RingHom.hasCoeToFun.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) g (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x))) -> (Eq.{max (succ (max u1 u2)) (succ u3)} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) f g)
-but is expected to have type
-  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] {A : ι -> Type.{u3}} {R : Type.{u1}} [_inst_2 : forall (i : ι), AddCommMonoid.{u3} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u3} ι A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u1} R] {{f : RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)}} {{g : RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)}}, (forall (i : ι) (x : A i), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) (FunLike.coe.{max (succ u2) (succ u3), succ u3, max (succ u2) (succ u3)} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (a : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (AddHomClass.toFunLike.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u2 u3} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (fun (_x : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonUnitalNonAssocSemiring.toMul.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))) (NonUnitalRingHomClass.toMulHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (RingHomClass.toNonUnitalRingHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5) (RingHom.instRingHomClassRingHom.{max u2 u3, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) f (FunLike.coe.{max (succ u2) (succ u3), succ u3, max (succ u2) (succ u3)} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u2 u3} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (fun (_x : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonUnitalNonAssocSemiring.toMul.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))) (NonUnitalRingHomClass.toMulHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (RingHomClass.toNonUnitalRingHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5) (RingHom.instRingHomClassRingHom.{max u2 u3, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) g (FunLike.coe.{max (succ u2) (succ u3), succ u3, max (succ u2) (succ u3)} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u2 u3} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x))) -> (Eq.{max (max (succ u2) (succ u3)) (succ u1)} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) f g)
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.ring_hom_ext DirectSum.ringHom_extₓ'. -/
 /-- Two `ring_hom`s out of a direct sum are equal if they agree on the generators. -/
 theorem ringHom_ext ⦃f g : (⨁ i, A i) →+* R⦄ (h : ∀ i x, f (of A i x) = g (of A i x)) : f = g :=
@@ -778,10 +732,7 @@ def toSemiring (f : ∀ i, A i →+ R) (hone : f _ GradedMonoid.GOne.one = 1)
 -/
 
 /- warning: direct_sum.to_semiring_of -> DirectSum.toSemiring_of is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} {R : Type.{u3}} [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u3} R] (f : forall (i : ι), AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (hone : Eq.{succ u3} R (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (GradedMonoid.GOne.one.{u1, u2} ι (fun (i : ι) => A i) (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (GradedMonoid.GMonoid.toGhasOne.{u1, u2} ι (fun (i : ι) => A i) _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)))) (OfNat.ofNat.{u3} R 1 (OfNat.mk.{u3} R 1 (One.one.{u3} R (AddMonoidWithOne.toOne.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))))) (hmul : forall {i : ι} {j : ι} (ai : A i) (aj : A j), Eq.{succ u3} R (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (GradedMonoid.GMul.mul.{u1, u2} ι (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGhasMul.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGnonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (HMul.hMul.{u3, u3, u3} R R R (instHMul.{u3} R (Distrib.toHasMul.{u3} R (NonUnitalNonAssocSemiring.toDistrib.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A i) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f i) ai) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A j) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f j) aj))) (i : ι) (x : A i), Eq.{succ u3} R (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (fun (_x : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) => (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) -> R) (RingHom.hasCoeToFun.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (DirectSum.toSemiring.{u1, u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) R (fun (i : ι) => _inst_2 i) _inst_3 _inst_4 _inst_5 f hone hmul) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) i) x)) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A i) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f i) x)
-but is expected to have type
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u3}} {R : Type.{u2}} [_inst_2 : forall (i : ι), AddCommMonoid.{u3} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u3} ι A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u2} R] (f : forall (i : ι), AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (hone : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (fun (_x : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddZeroClass.toAdd.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3))))))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (Semiring.toOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) _inst_5)))) (hmul : forall {i : ι} {j : ι} (ai : A i) (aj : A j), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => R) (GradedMonoid.GMul.mul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (fun (_x : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddZeroClass.toAdd.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j))))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (GradedMonoid.GMul.mul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => R) aj) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (NonUnitalNonAssocSemiring.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (Semiring.toNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) _inst_5)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f i) ai) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) (fun (_x : A j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) R (AddZeroClass.toAdd.{u3} (A j) (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f j) aj))) (i : ι) (x : A i), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) (FunLike.coe.{max (succ u1) (succ u3), succ u3, max (succ u1) (succ u3)} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (a : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (AddHomClass.toFunLike.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u1 u3} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), max (succ u1) (succ u3), succ u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (fun (_x : DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) _x) (MulHomClass.toFunLike.{max (max u1 u3) u2, max u1 u3, u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonUnitalNonAssocSemiring.toMul.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))) (NonUnitalRingHomClass.toMulHomClass.{max (max u1 u3) u2, max u1 u3, u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (RingHomClass.toNonUnitalRingHomClass.{max (max u1 u3) u2, max u1 u3, u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5) (RingHom.instRingHomClassRingHom.{max u1 u3, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (DirectSum.toSemiring.{u1, u3, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) R (fun (i : ι) => _inst_2 i) _inst_3 _inst_4 _inst_5 f hone hmul) (FunLike.coe.{max (succ u1) (succ u3), succ u3, max (succ u1) (succ u3)} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u1 u3} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f i) x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.to_semiring_of DirectSum.toSemiring_ofₓ'. -/
 @[simp]
 theorem toSemiring_of (f : ∀ i, A i →+ R) (hone hmul) (i : ι) (x : A i) :
@@ -790,10 +741,7 @@ theorem toSemiring_of (f : ∀ i, A i →+ R) (hone hmul) (i : ι) (x : A i) :
 #align direct_sum.to_semiring_of DirectSum.toSemiring_of
 
 /- warning: direct_sum.to_semiring_coe_add_monoid_hom -> DirectSum.toSemiring_coe_addMonoidHom is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} {R : Type.{u3}} [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u3} R] (f : forall (i : ι), AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (hone : Eq.{succ u3} R (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (GradedMonoid.GOne.one.{u1, u2} ι (fun (i : ι) => A i) (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (GradedMonoid.GMonoid.toGhasOne.{u1, u2} ι (fun (i : ι) => A i) _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)))) (OfNat.ofNat.{u3} R 1 (OfNat.mk.{u3} R 1 (One.one.{u3} R (AddMonoidWithOne.toOne.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))))) (hmul : forall {i : ι} {j : ι} (ai : A i) (aj : A j), Eq.{succ u3} R (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (GradedMonoid.GMul.mul.{u1, u2} ι (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGhasMul.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGnonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (HMul.hMul.{u3, u3, u3} R R R (instHMul.{u3} R (Distrib.toHasMul.{u3} R (NonUnitalNonAssocSemiring.toDistrib.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A i) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f i) ai) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A j) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f j) aj))), Eq.{max (succ u3) (succ (max u1 u2))} (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoidWithOne.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) ((fun (a : Sort.{max (succ (max u1 u2)) (succ u3)}) (b : Sort.{max (succ u3) (succ (max u1 u2))}) [self : HasLiftT.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} a b] => self.0) (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoidWithOne.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (HasLiftT.mk.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoidWithOne.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (CoeTCₓ.coe.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoidWithOne.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (AddMonoidHom.hasCoeT.{max u1 u2, u3, max (max u1 u2) u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoidWithOne.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) (RingHomClass.toAddMonoidHomClass.{max (max u1 u2) u3, max u1 u2, u3} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5) (RingHom.ringHomClass.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (DirectSum.toSemiring.{u1, u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) R (fun (i : ι) => _inst_2 i) _inst_3 _inst_4 _inst_5 f hone hmul)) (DirectSum.toAddMonoid.{u1, u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))) f)
-but is expected to have type
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u3}} {R : Type.{u2}} [_inst_2 : forall (i : ι), AddCommMonoid.{u3} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u3} ι A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u2} R] (f : forall (i : ι), AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (hone : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (fun (_x : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddZeroClass.toAdd.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3))))))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (Semiring.toOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) _inst_5)))) (hmul : forall {i : ι} {j : ι} (ai : A i) (aj : A j), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => R) (GradedMonoid.GMul.mul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (fun (_x : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddZeroClass.toAdd.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j))))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (GradedMonoid.GMul.mul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => R) aj) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (NonUnitalNonAssocSemiring.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (Semiring.toNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) _inst_5)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f i) ai) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) (fun (_x : A j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) R (AddZeroClass.toAdd.{u3} (A j) (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f j) aj))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (AddMonoidHom.{max u1 u3, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoidWithOne.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddMonoidHom.{max u1 u3, u2, max (max u1 u3) u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoidWithOne.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (RingHomClass.toAddMonoidHomClass.{max (max u1 u3) u2, max u1 u3, u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5) (RingHom.instRingHomClassRingHom.{max u1 u3, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5))) (DirectSum.toSemiring.{u1, u3, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) R (fun (i : ι) => _inst_2 i) _inst_3 _inst_4 _inst_5 f hone hmul)) (DirectSum.toAddMonoid.{u1, u3, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))) f)
+<too large>
 Case conversion may be inaccurate. Consider using '#align direct_sum.to_semiring_coe_add_monoid_hom DirectSum.toSemiring_coe_addMonoidHomₓ'. -/
 @[simp]
 theorem toSemiring_coe_addMonoidHom (f : ∀ i, A i →+ R) (hone hmul) :
Diff
@@ -741,7 +741,7 @@ theorem ringHom_ext' ⦃F G : (⨁ i, A i) →+* R⦄
 lean 3 declaration is
   forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} {R : Type.{u3}} [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u3} R] {{f : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)}} {{g : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)}}, (forall (i : ι) (x : A i), Eq.{succ u3} R (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (fun (_x : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) => (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) -> R) (RingHom.hasCoeToFun.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) f (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (fun (_x : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) => (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) -> R) (RingHom.hasCoeToFun.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) g (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x))) -> (Eq.{max (succ (max u1 u2)) (succ u3)} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) f g)
 but is expected to have type
-  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] {A : ι -> Type.{u3}} {R : Type.{u1}} [_inst_2 : forall (i : ι), AddCommMonoid.{u3} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u3} ι A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u1} R] {{f : RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)}} {{g : RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)}}, (forall (i : ι) (x : A i), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) (FunLike.coe.{max (succ u2) (succ u3), succ u3, max (succ u2) (succ u3)} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (a : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (AddHomClass.toFunLike.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u2 u3} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (fun (_x : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonUnitalNonAssocSemiring.toMul.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))) (NonUnitalRingHomClass.toMulHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (RingHomClass.toNonUnitalRingHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5) (RingHom.instRingHomClassRingHom.{max u2 u3, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) f (FunLike.coe.{max (succ u2) (succ u3), succ u3, max (succ u2) (succ u3)} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u2 u3} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (fun (_x : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonUnitalNonAssocSemiring.toMul.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))) (NonUnitalRingHomClass.toMulHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (RingHomClass.toNonUnitalRingHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5) (RingHom.instRingHomClassRingHom.{max u2 u3, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) g (FunLike.coe.{max (succ u2) (succ u3), succ u3, max (succ u2) (succ u3)} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u2 u3} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x))) -> (Eq.{max (max (succ u2) (succ u3)) (succ u1)} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) f g)
+  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] {A : ι -> Type.{u3}} {R : Type.{u1}} [_inst_2 : forall (i : ι), AddCommMonoid.{u3} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u3} ι A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u1} R] {{f : RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)}} {{g : RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)}}, (forall (i : ι) (x : A i), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) (FunLike.coe.{max (succ u2) (succ u3), succ u3, max (succ u2) (succ u3)} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (a : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (AddHomClass.toFunLike.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u2 u3} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (fun (_x : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonUnitalNonAssocSemiring.toMul.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))) (NonUnitalRingHomClass.toMulHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (RingHomClass.toNonUnitalRingHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5) (RingHom.instRingHomClassRingHom.{max u2 u3, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) f (FunLike.coe.{max (succ u2) (succ u3), succ u3, max (succ u2) (succ u3)} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u2 u3} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (fun (_x : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonUnitalNonAssocSemiring.toMul.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))) (NonUnitalRingHomClass.toMulHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (RingHomClass.toNonUnitalRingHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5) (RingHom.instRingHomClassRingHom.{max u2 u3, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) g (FunLike.coe.{max (succ u2) (succ u3), succ u3, max (succ u2) (succ u3)} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u2 u3} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x))) -> (Eq.{max (max (succ u2) (succ u3)) (succ u1)} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) f g)
 Case conversion may be inaccurate. Consider using '#align direct_sum.ring_hom_ext DirectSum.ringHom_extₓ'. -/
 /-- Two `ring_hom`s out of a direct sum are equal if they agree on the generators. -/
 theorem ringHom_ext ⦃f g : (⨁ i, A i) →+* R⦄ (h : ∀ i x, f (of A i x) = g (of A i x)) : f = g :=
@@ -781,7 +781,7 @@ def toSemiring (f : ∀ i, A i →+ R) (hone : f _ GradedMonoid.GOne.one = 1)
 lean 3 declaration is
   forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} {R : Type.{u3}} [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u3} R] (f : forall (i : ι), AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (hone : Eq.{succ u3} R (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (GradedMonoid.GOne.one.{u1, u2} ι (fun (i : ι) => A i) (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (GradedMonoid.GMonoid.toGhasOne.{u1, u2} ι (fun (i : ι) => A i) _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)))) (OfNat.ofNat.{u3} R 1 (OfNat.mk.{u3} R 1 (One.one.{u3} R (AddMonoidWithOne.toOne.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))))) (hmul : forall {i : ι} {j : ι} (ai : A i) (aj : A j), Eq.{succ u3} R (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (GradedMonoid.GMul.mul.{u1, u2} ι (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGhasMul.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGnonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (HMul.hMul.{u3, u3, u3} R R R (instHMul.{u3} R (Distrib.toHasMul.{u3} R (NonUnitalNonAssocSemiring.toDistrib.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A i) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f i) ai) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A j) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f j) aj))) (i : ι) (x : A i), Eq.{succ u3} R (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (fun (_x : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) => (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) -> R) (RingHom.hasCoeToFun.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (DirectSum.toSemiring.{u1, u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) R (fun (i : ι) => _inst_2 i) _inst_3 _inst_4 _inst_5 f hone hmul) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) i) x)) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A i) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f i) x)
 but is expected to have type
-  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u3}} {R : Type.{u2}} [_inst_2 : forall (i : ι), AddCommMonoid.{u3} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u3} ι A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u2} R] (f : forall (i : ι), AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (hone : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (fun (_x : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddZeroClass.toAdd.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3))))))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (Semiring.toOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) _inst_5)))) (hmul : forall {i : ι} {j : ι} (ai : A i) (aj : A j), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => R) (GradedMonoid.GMul.mul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (fun (_x : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddZeroClass.toAdd.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j))))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (GradedMonoid.GMul.mul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => R) aj) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (NonUnitalNonAssocSemiring.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (Semiring.toNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) _inst_5)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f i) ai) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) (fun (_x : A j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) R (AddZeroClass.toAdd.{u3} (A j) (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f j) aj))) (i : ι) (x : A i), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) (FunLike.coe.{max (succ u1) (succ u3), succ u3, max (succ u1) (succ u3)} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (a : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (AddHomClass.toFunLike.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u1 u3} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), max (succ u1) (succ u3), succ u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (fun (_x : DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) _x) (MulHomClass.toFunLike.{max (max u1 u3) u2, max u1 u3, u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonUnitalNonAssocSemiring.toMul.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))) (NonUnitalRingHomClass.toMulHomClass.{max (max u1 u3) u2, max u1 u3, u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (RingHomClass.toNonUnitalRingHomClass.{max (max u1 u3) u2, max u1 u3, u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5) (RingHom.instRingHomClassRingHom.{max u1 u3, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (DirectSum.toSemiring.{u1, u3, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) R (fun (i : ι) => _inst_2 i) _inst_3 _inst_4 _inst_5 f hone hmul) (FunLike.coe.{max (succ u1) (succ u3), succ u3, max (succ u1) (succ u3)} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u1 u3} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f i) x)
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u3}} {R : Type.{u2}} [_inst_2 : forall (i : ι), AddCommMonoid.{u3} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u3} ι A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u2} R] (f : forall (i : ι), AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (hone : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (fun (_x : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddZeroClass.toAdd.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3))))))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (Semiring.toOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) _inst_5)))) (hmul : forall {i : ι} {j : ι} (ai : A i) (aj : A j), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => R) (GradedMonoid.GMul.mul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (fun (_x : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddZeroClass.toAdd.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j))))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (GradedMonoid.GMul.mul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => R) aj) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (NonUnitalNonAssocSemiring.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (Semiring.toNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) _inst_5)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f i) ai) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) (fun (_x : A j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) R (AddZeroClass.toAdd.{u3} (A j) (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f j) aj))) (i : ι) (x : A i), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) (FunLike.coe.{max (succ u1) (succ u3), succ u3, max (succ u1) (succ u3)} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (a : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (AddHomClass.toFunLike.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u1 u3} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), max (succ u1) (succ u3), succ u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (fun (_x : DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) _x) (MulHomClass.toFunLike.{max (max u1 u3) u2, max u1 u3, u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonUnitalNonAssocSemiring.toMul.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))) (NonUnitalRingHomClass.toMulHomClass.{max (max u1 u3) u2, max u1 u3, u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (RingHomClass.toNonUnitalRingHomClass.{max (max u1 u3) u2, max u1 u3, u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5) (RingHom.instRingHomClassRingHom.{max u1 u3, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (DirectSum.toSemiring.{u1, u3, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) R (fun (i : ι) => _inst_2 i) _inst_3 _inst_4 _inst_5 f hone hmul) (FunLike.coe.{max (succ u1) (succ u3), succ u3, max (succ u1) (succ u3)} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u1 u3} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f i) x)
 Case conversion may be inaccurate. Consider using '#align direct_sum.to_semiring_of DirectSum.toSemiring_ofₓ'. -/
 @[simp]
 theorem toSemiring_of (f : ∀ i, A i →+ R) (hone hmul) (i : ι) (x : A i) :
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
 
 ! This file was ported from Lean 3 source module algebra.direct_sum.ring
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
+! leanprover-community/mathlib commit 50251fd6309cca5ca2e747882ffecd2729f38c5d
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.Algebra.DirectSum.Basic
 /-!
 # Additively-graded multiplicative structures on `⨁ i, A i`
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 This module provides a set of heterogeneous typeclasses for defining a multiplicative structure
 over `⨁ i, A i` such that `(*) : A i → A j → A (i + j)`; that is to say, `A` forms an
 additively-graded ring. The typeclasses are:
Diff
@@ -91,14 +91,20 @@ section Defs
 
 variable (A : ι → Type _)
 
+/- warning: direct_sum.gnon_unital_non_assoc_semiring -> DirectSum.GNonUnitalNonAssocSemiring is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : Add.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)], Sort.{max (succ u1) (succ u2)}
+but is expected to have type
+  forall {ι : Type.{u1}} (_inst_1 : ι -> Type.{u2}) [A : Add.{u1} ι] [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (_inst_1 i)], Sort.{max (succ u1) (succ u2)}
+Case conversion may be inaccurate. Consider using '#align direct_sum.gnon_unital_non_assoc_semiring DirectSum.GNonUnitalNonAssocSemiringₓ'. -/
 /-- A graded version of `non_unital_non_assoc_semiring`. -/
-class GnonUnitalNonAssocSemiring [Add ι] [∀ i, AddCommMonoid (A i)] extends
+class GNonUnitalNonAssocSemiring [Add ι] [∀ i, AddCommMonoid (A i)] extends
   GradedMonoid.GMul A where
   mul_zero : ∀ {i j} (a : A i), mul a (0 : A j) = 0
   zero_mul : ∀ {i j} (b : A j), mul (0 : A i) b = 0
   mul_add : ∀ {i j} (a : A i) (b c : A j), mul a (b + c) = mul a b + mul a c
   add_mul : ∀ {i j} (a b : A i) (c : A j), mul (a + b) c = mul a c + mul b c
-#align direct_sum.gnon_unital_non_assoc_semiring DirectSum.GnonUnitalNonAssocSemiring
+#align direct_sum.gnon_unital_non_assoc_semiring DirectSum.GNonUnitalNonAssocSemiring
 
 end Defs
 
@@ -106,32 +112,62 @@ section Defs
 
 variable (A : ι → Type _)
 
+/- warning: direct_sum.gsemiring -> DirectSum.GSemiring is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : AddMonoid.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)], Sort.{max (succ u1) (succ u2)}
+but is expected to have type
+  forall {ι : Type.{u1}} (_inst_1 : ι -> Type.{u2}) [A : AddMonoid.{u1} ι] [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (_inst_1 i)], Sort.{max (succ u1) (succ u2)}
+Case conversion may be inaccurate. Consider using '#align direct_sum.gsemiring DirectSum.GSemiringₓ'. -/
 /-- A graded version of `semiring`. -/
-class Gsemiring [AddMonoid ι] [∀ i, AddCommMonoid (A i)] extends GnonUnitalNonAssocSemiring A,
+class GSemiring [AddMonoid ι] [∀ i, AddCommMonoid (A i)] extends GNonUnitalNonAssocSemiring A,
   GradedMonoid.GMonoid A where
   natCast : ℕ → A 0
   natCast_zero : nat_cast 0 = 0
   natCast_succ : ∀ n : ℕ, nat_cast (n + 1) = nat_cast n + GradedMonoid.GOne.one
-#align direct_sum.gsemiring DirectSum.Gsemiring
-
+#align direct_sum.gsemiring DirectSum.GSemiring
+
+/- warning: direct_sum.gcomm_semiring -> DirectSum.GCommSemiring is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : AddCommMonoid.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)], Sort.{max (succ u1) (succ u2)}
+but is expected to have type
+  forall {ι : Type.{u1}} (_inst_1 : ι -> Type.{u2}) [A : AddCommMonoid.{u1} ι] [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (_inst_1 i)], Sort.{max (succ u1) (succ u2)}
+Case conversion may be inaccurate. Consider using '#align direct_sum.gcomm_semiring DirectSum.GCommSemiringₓ'. -/
 /-- A graded version of `comm_semiring`. -/
-class GcommSemiring [AddCommMonoid ι] [∀ i, AddCommMonoid (A i)] extends Gsemiring A,
+class GCommSemiring [AddCommMonoid ι] [∀ i, AddCommMonoid (A i)] extends GSemiring A,
   GradedMonoid.GCommMonoid A
-#align direct_sum.gcomm_semiring DirectSum.GcommSemiring
-
+#align direct_sum.gcomm_semiring DirectSum.GCommSemiring
+
+/- warning: direct_sum.gring -> DirectSum.GRing is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : AddMonoid.{u1} ι] [_inst_3 : forall (i : ι), AddCommGroup.{u2} (A i)], Sort.{max (succ u1) (succ u2)}
+but is expected to have type
+  forall {ι : Type.{u1}} (_inst_1 : ι -> Type.{u2}) [A : AddMonoid.{u1} ι] [_inst_2 : forall (i : ι), AddCommGroup.{u2} (_inst_1 i)], Sort.{max (succ u1) (succ u2)}
+Case conversion may be inaccurate. Consider using '#align direct_sum.gring DirectSum.GRingₓ'. -/
 /-- A graded version of `ring`. -/
-class Gring [AddMonoid ι] [∀ i, AddCommGroup (A i)] extends Gsemiring A where
+class GRing [AddMonoid ι] [∀ i, AddCommGroup (A i)] extends GSemiring A where
   intCast : ℤ → A 0
   intCast_ofNat : ∀ n : ℕ, int_cast n = nat_cast n
   intCast_negSucc : ∀ n : ℕ, int_cast (-(n + 1 : ℕ)) = -nat_cast (n + 1 : ℕ)
-#align direct_sum.gring DirectSum.Gring
-
+#align direct_sum.gring DirectSum.GRing
+
+/- warning: direct_sum.gcomm_ring -> DirectSum.GCommRing is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : AddCommMonoid.{u1} ι] [_inst_3 : forall (i : ι), AddCommGroup.{u2} (A i)], Sort.{max (succ u1) (succ u2)}
+but is expected to have type
+  forall {ι : Type.{u1}} (_inst_1 : ι -> Type.{u2}) [A : AddCommMonoid.{u1} ι] [_inst_2 : forall (i : ι), AddCommGroup.{u2} (_inst_1 i)], Sort.{max (succ u1) (succ u2)}
+Case conversion may be inaccurate. Consider using '#align direct_sum.gcomm_ring DirectSum.GCommRingₓ'. -/
 /-- A graded version of `comm_ring`. -/
-class GcommRing [AddCommMonoid ι] [∀ i, AddCommGroup (A i)] extends Gring A, GcommSemiring A
-#align direct_sum.gcomm_ring DirectSum.GcommRing
+class GCommRing [AddCommMonoid ι] [∀ i, AddCommGroup (A i)] extends GRing A, GCommSemiring A
+#align direct_sum.gcomm_ring DirectSum.GCommRing
 
 end Defs
 
+/- warning: direct_sum.of_eq_of_graded_monoid_eq -> DirectSum.of_eq_of_gradedMonoid_eq is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] {i : ι} {j : ι} {a : A i} {b : A j}, (Eq.{max (succ u1) (succ u2)} (GradedMonoid.{u1, u2} ι (fun {i : ι} => A i)) (GradedMonoid.mk.{u1, u2} ι (fun {i : ι} => A i) i a) (GradedMonoid.mk.{u1, u2} ι (fun {i : ι} => A i) j b)) -> (Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) a) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) ((fun (i : ι) => _inst_2 i) j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) ((fun (i : ι) => _inst_2 i) j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A j) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) ((fun (i : ι) => _inst_2 i) j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) j) b))
+but is expected to have type
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] {i : ι} {j : ι} {a : A i} {b : A j}, (Eq.{max (succ u1) (succ u2)} (GradedMonoid.{u1, u2} ι A) (GradedMonoid.mk.{u1, u2} ι A i a) (GradedMonoid.mk.{u1, u2} ι A j b)) -> (Eq.{max (succ u1) (succ u2)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (AddMonoidHom.{u2, max u2 u1} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (AddMonoidHom.{u2, max u2 u1} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u2} (A i) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u2, max u1 u2} (AddMonoidHom.{u2, max u2 u1} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) a) (FunLike.coe.{max (succ u1) (succ u2), succ u2, max (succ u1) (succ u2)} (AddMonoidHom.{u2, max u2 u1} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A j) (fun (_x : A j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u2, max u1 u2} (AddMonoidHom.{u2, max u2 u1} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u2} (A j) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j)))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u2, max u1 u2} (AddMonoidHom.{u2, max u2 u1} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) j) b))
+Case conversion may be inaccurate. Consider using '#align direct_sum.of_eq_of_graded_monoid_eq DirectSum.of_eq_of_gradedMonoid_eqₓ'. -/
 theorem of_eq_of_gradedMonoid_eq {A : ι → Type _} [∀ i : ι, AddCommMonoid (A i)] {i j : ι} {a : A i}
     {b : A j} (h : GradedMonoid.mk i a = GradedMonoid.mk j b) :
     DirectSum.of A i a = DirectSum.of A j b :=
@@ -153,29 +189,37 @@ end One
 
 section Mul
 
-variable [Add ι] [∀ i, AddCommMonoid (A i)] [GnonUnitalNonAssocSemiring A]
+variable [Add ι] [∀ i, AddCommMonoid (A i)] [GNonUnitalNonAssocSemiring A]
 
 open AddMonoidHom (flip_apply coe_comp compHom_apply_apply)
 
+/- warning: direct_sum.gmul_hom -> DirectSum.gMulHom is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : Add.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_2 (fun (i : ι) => _inst_3 i)] {i : ι} {j : ι}, AddMonoidHom.{u2, u2} (A i) (AddMonoidHom.{u2, u2} (A j) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j))))) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{u2} (AddMonoidHom.{u2, u2} (A j) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j))))) (AddCommMonoid.toAddMonoid.{u2} (AddMonoidHom.{u2, u2} (A j) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j))))) (AddMonoidHom.addCommMonoid.{u2, u2} (A j) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_3 j))) (_inst_3 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)))))
+but is expected to have type
+  forall {ι : Type.{u1}} (_inst_1 : ι -> Type.{u2}) [A : Add.{u1} ι] [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (_inst_1 i)] [_inst_3 : DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι _inst_1 A (fun (i : ι) => _inst_2 i)] {_inst_4 : ι} {i : ι}, AddMonoidHom.{u2, u2} (_inst_1 _inst_4) (AddMonoidHom.{u2, u2} (_inst_1 i) (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (AddMonoid.toAddZeroClass.{u2} (_inst_1 i) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i))))) (AddMonoid.toAddZeroClass.{u2} (_inst_1 _inst_4) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 _inst_4) (_inst_2 _inst_4))) (AddMonoid.toAddZeroClass.{u2} (AddMonoidHom.{u2, u2} (_inst_1 i) (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (AddMonoid.toAddZeroClass.{u2} (_inst_1 i) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i))))) (AddCommMonoid.toAddMonoid.{u2} (AddMonoidHom.{u2, u2} (_inst_1 i) (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (AddMonoid.toAddZeroClass.{u2} (_inst_1 i) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i))))) (AddMonoidHom.addCommMonoid.{u2, u2} (_inst_1 i) (_inst_1 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)) (AddMonoid.toAddZeroClass.{u2} (_inst_1 i) (AddCommMonoid.toAddMonoid.{u2} (_inst_1 i) (_inst_2 i))) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι A) _inst_4 i)))))
+Case conversion may be inaccurate. Consider using '#align direct_sum.gmul_hom DirectSum.gMulHomₓ'. -/
 /-- The piecewise multiplication from the `has_mul` instance, as a bundled homomorphism. -/
 @[simps]
-def gmulHom {i j} : A i →+ A j →+ A (i + j)
+def gMulHom {i j} : A i →+ A j →+ A (i + j)
     where
   toFun a :=
     { toFun := fun b => GradedMonoid.GMul.mul a b
-      map_zero' := GnonUnitalNonAssocSemiring.mul_zero _
-      map_add' := GnonUnitalNonAssocSemiring.mul_add _ }
-  map_zero' := AddMonoidHom.ext fun a => GnonUnitalNonAssocSemiring.zero_mul a
-  map_add' a₁ a₂ := AddMonoidHom.ext fun b => GnonUnitalNonAssocSemiring.add_mul _ _ _
-#align direct_sum.gmul_hom DirectSum.gmulHom
+      map_zero' := GNonUnitalNonAssocSemiring.mul_zero _
+      map_add' := GNonUnitalNonAssocSemiring.mul_add _ }
+  map_zero' := AddMonoidHom.ext fun a => GNonUnitalNonAssocSemiring.zero_mul a
+  map_add' a₁ a₂ := AddMonoidHom.ext fun b => GNonUnitalNonAssocSemiring.add_mul _ _ _
+#align direct_sum.gmul_hom DirectSum.gMulHom
 
+#print DirectSum.mulHom /-
 /-- The multiplication from the `has_mul` instance, as a bundled homomorphism. -/
 def mulHom : (⨁ i, A i) →+ (⨁ i, A i) →+ ⨁ i, A i :=
   DirectSum.toAddMonoid fun i =>
     AddMonoidHom.flip <|
       DirectSum.toAddMonoid fun j =>
-        AddMonoidHom.flip <| (DirectSum.of A _).compHom.comp <| gmulHom A
+        AddMonoidHom.flip <| (DirectSum.of A _).compHom.comp <| gMulHom A
 #align direct_sum.mul_hom DirectSum.mulHom
+-/
 
 instance : NonUnitalNonAssocSemiring (⨁ i, A i) :=
   { DirectSum.addCommMonoid _ _ with
@@ -189,6 +233,12 @@ instance : NonUnitalNonAssocSemiring (⨁ i, A i) :=
 
 variable {A}
 
+/- warning: direct_sum.mul_hom_of_of -> DirectSum.mulHom_of_of is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} [_inst_2 : Add.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_2 (fun (i : ι) => _inst_3 i)] {i : ι} {j : ι} (a : A i) (b : A j), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (fun (_x : AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) => (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))) (AddMonoidHom.hasCoeToFun.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddCommMonoid.toAddMonoid.{max u1 u2} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddMonoidHom.addCommMonoid.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))))) (fun (_x : AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddCommMonoid.toAddMonoid.{max u1 u2} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddMonoidHom.addCommMonoid.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))))) => (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) -> (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))))) (AddMonoidHom.hasCoeToFun.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddCommMonoid.toAddMonoid.{max u1 u2} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (AddMonoidHom.addCommMonoid.{max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)))))) (DirectSum.mulHom.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_2 (fun (i : ι) => _inst_3 i) _inst_4) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_3 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_3 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_3 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i) i) a)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) ((fun (i : ι) => _inst_3 i) j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) ((fun (i : ι) => _inst_3 i) j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) => (A j) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) ((fun (i : ι) => _inst_3 i) j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {j : ι} => A j) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i) j) b)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) ((fun (i : ι) => _inst_3 i) (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) ((fun (i : ι) => _inst_3 i) (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) => (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) ((fun (i : ι) => _inst_3 i) (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) (fun (i : ι) => (fun (i : ι) => _inst_3 i) i) (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (GradedMonoid.GMul.mul.{u1, u2} ι (fun {i : ι} => A i) _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGhasMul.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) _inst_2 (fun (i : ι) => _inst_3 i) _inst_4) i j a b))
+but is expected to have type
+  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] {A : ι -> Type.{u1}} [_inst_2 : Add.{u2} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u2, u1} ι A _inst_2 (fun (i : ι) => _inst_3 i)] {i : ι} {j : ι} (a : A i) (b : A j), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (fun (a : A j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A j) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) j) b)) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (fun (a : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (fun (_x : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (fun (a : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (fun (a : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHom.addCommMonoid.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (fun (_x : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) => AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) _x) (AddHomClass.toFunLike.{max u2 u1, max u2 u1, max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHom.addCommMonoid.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddZeroClass.toAdd.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHom.addCommMonoid.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, max u2 u1, max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHom.addCommMonoid.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHom.addCommMonoid.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHom.addMonoidHomClass.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{max u1 u2, max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHom.addCommMonoid.{max u2 u1, max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))))))) (DirectSum.mulHom.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_2 (fun (i : ι) => _inst_3 i) _inst_4) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) a)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (fun (_x : A j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A j) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) j) b)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (fun (_x : A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (GradedMonoid.GMul.mul.{u2, u1} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u2, u1} ι A _inst_2 (fun (i : ι) => _inst_3 i) _inst_4) i j a b))
+Case conversion may be inaccurate. Consider using '#align direct_sum.mul_hom_of_of DirectSum.mulHom_of_ofₓ'. -/
 theorem mulHom_of_of {i j} (a : A i) (b : A j) :
     mulHom A (of _ i a) (of _ j b) = of _ (i + j) (GradedMonoid.GMul.mul a b) :=
   by
@@ -197,6 +247,12 @@ theorem mulHom_of_of {i j} (a : A i) (b : A j) :
     comp_hom_apply_apply, coe_comp, Function.comp_apply, gmul_hom_apply_apply]
 #align direct_sum.mul_hom_of_of DirectSum.mulHom_of_of
 
+/- warning: direct_sum.of_mul_of -> DirectSum.of_mul_of is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} [_inst_2 : Add.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_2 (fun (i : ι) => _inst_3 i)] {i : ι} {j : ι} (a : A i) (b : A j), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instHMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (Distrib.toHasMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.nonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_2 (fun (i : ι) => _inst_3 i) _inst_4)))) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) (fun (i : ι) => _inst_3 i) i) a) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A j) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A j) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {j : ι} => A j) (fun (i : ι) => _inst_3 i) j) b)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) (fun (i : ι) => _inst_3 i) (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι _inst_2) i j)) (GradedMonoid.GMul.mul.{u1, u2} ι (fun {i : ι} => A i) _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGhasMul.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) _inst_2 (fun (i : ι) => _inst_3 i) _inst_4) i j a b))
+but is expected to have type
+  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] {A : ι -> Type.{u1}} [_inst_2 : Add.{u2} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u2, u1} ι A _inst_2 (fun (i : ι) => _inst_3 i)] {i : ι} {j : ι} (a : A i) (b : A j), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) b) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (instHMul.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (DirectSum.instNonUnitalNonAssocSemiringDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_2 (fun (i : ι) => _inst_3 i) _inst_4))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) a) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (fun (_x : A j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A j) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A j) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A j) (AddCommMonoid.toAddMonoid.{u1} (A j) (_inst_3 j))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) j) b)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (fun (_x : A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (AddCommMonoid.toAddMonoid.{u1} (A (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (_inst_3 (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (HAdd.hAdd.{u2, u2, u2} ι ι ι (instHAdd.{u2} ι _inst_2) i j)) (GradedMonoid.GMul.mul.{u2, u1} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u2, u1} ι A _inst_2 (fun (i : ι) => _inst_3 i) _inst_4) i j a b))
+Case conversion may be inaccurate. Consider using '#align direct_sum.of_mul_of DirectSum.of_mul_ofₓ'. -/
 theorem of_mul_of {i j} (a : A i) (b : A j) :
     of _ i a * of _ j b = of _ (i + j) (GradedMonoid.GMul.mul a b) :=
   mulHom_of_of a b
@@ -206,29 +262,40 @@ end Mul
 
 section Semiring
 
-variable [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [Gsemiring A]
+variable [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A]
 
 open AddMonoidHom (flipHom coe_comp compHom_apply_apply flip_apply flipHom_apply)
 
-private theorem one_mul (x : ⨁ i, A i) : 1 * x = x :=
+/- warning: direct_sum.one_mul clashes with [anonymous] -> [anonymous]
+Case conversion may be inaccurate. Consider using '#align direct_sum.one_mul [anonymous]ₓ'. -/
+#print [anonymous] /-
+private theorem [anonymous] (x : ⨁ i, A i) : 1 * x = x :=
   by
   suffices mulHom A 1 = AddMonoidHom.id (⨁ i, A i) from AddMonoidHom.congr_fun this x
   apply add_hom_ext; intro i xi
   unfold One.one
   rw [mul_hom_of_of]
   exact of_eq_of_graded_monoid_eq (one_mul <| GradedMonoid.mk i xi)
-#align direct_sum.one_mul direct_sum.one_mul
+#align direct_sum.one_mul [anonymous]
+-/
 
-private theorem mul_one (x : ⨁ i, A i) : x * 1 = x :=
+/- warning: direct_sum.mul_one clashes with [anonymous] -> [anonymous]
+Case conversion may be inaccurate. Consider using '#align direct_sum.mul_one [anonymous]ₓ'. -/
+#print [anonymous] /-
+private theorem [anonymous] (x : ⨁ i, A i) : x * 1 = x :=
   by
   suffices (mulHom A).flip 1 = AddMonoidHom.id (⨁ i, A i) from AddMonoidHom.congr_fun this x
   apply add_hom_ext; intro i xi
   unfold One.one
   rw [flip_apply, mul_hom_of_of]
   exact of_eq_of_graded_monoid_eq (mul_one <| GradedMonoid.mk i xi)
-#align direct_sum.mul_one direct_sum.mul_one
+#align direct_sum.mul_one [anonymous]
+-/
 
-private theorem mul_assoc (a b c : ⨁ i, A i) : a * b * c = a * (b * c) :=
+/- warning: direct_sum.mul_assoc clashes with [anonymous] -> [anonymous]
+Case conversion may be inaccurate. Consider using '#align direct_sum.mul_assoc [anonymous]ₓ'. -/
+#print [anonymous] /-
+private theorem [anonymous] (a b c : ⨁ i, A i) : a * b * c = a * (b * c) :=
   by
   suffices
     (-- `λ a b c, a * b * c` as a bundled hom
@@ -245,8 +312,10 @@ private theorem mul_assoc (a b c : ⨁ i, A i) : a * b * c = a * (b * c) :=
   dsimp only [coe_comp, Function.comp_apply, comp_hom_apply_apply, flip_apply, flip_hom_apply]
   rw [mul_hom_of_of, mul_hom_of_of, mul_hom_of_of, mul_hom_of_of]
   exact of_eq_of_graded_monoid_eq (mul_assoc (GradedMonoid.mk ai ax) ⟨bi, bx⟩ ⟨ci, cx⟩)
-#align direct_sum.mul_assoc direct_sum.mul_assoc
+#align direct_sum.mul_assoc [anonymous]
+-/
 
+#print DirectSum.semiring /-
 /-- The `semiring` structure derived from `gsemiring A`. -/
 instance semiring : Semiring (⨁ i, A i) :=
   { DirectSum.nonUnitalNonAssocSemiring _ with
@@ -257,23 +326,36 @@ instance semiring : Semiring (⨁ i, A i) :=
     one_mul := one_mul A
     mul_one := mul_one A
     mul_assoc := mul_assoc A
-    natCast := fun n => of _ _ (Gsemiring.natCast n)
+    natCast := fun n => of _ _ (GSemiring.natCast n)
     natCast_zero := by rw [gsemiring.nat_cast_zero, map_zero]
     natCast_succ := fun n => by
       rw [gsemiring.nat_cast_succ, map_add]
       rfl }
 #align direct_sum.semiring DirectSum.semiring
+-/
 
-theorem of_pow {i} (a : A i) (n : ℕ) :
+/- warning: direct_sum.of_pow -> DirectSum.ofPow is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] {i : ι} (a : A i) (n : Nat), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (HPow.hPow.{max u1 u2, 0, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) Nat (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instHPow.{max u1 u2, 0} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) Nat (Monoid.Pow.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (MonoidWithZero.toMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toMonoidWithZero.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))))) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) (fun (i : ι) => _inst_2 i) i) a) n) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (AddCommMonoid.toAddMonoid.{u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (_inst_2 (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (AddCommMonoid.toAddMonoid.{u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (_inst_2 (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) => (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (AddCommMonoid.toAddMonoid.{u2} (A (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (_inst_2 (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) (fun (i : ι) => _inst_2 i) (SMul.smul.{0, u1} Nat ι (AddMonoid.SMul.{u1} ι _inst_3) n i)) (GradedMonoid.GMonoid.gnpow.{u1, u2} ι (fun {i : ι} => A i) _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun {i : ι} => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) n i a))
+but is expected to have type
+  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i)] {i : ι} (a : A i) (n : Nat), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (HPow.hPow.{max u2 u1, 0, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (instHPow.{max u2 u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) Nat (Monoid.Pow.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (MonoidWithZero.toMonoid.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (Semiring.toMonoidWithZero.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (DirectSum.semiring.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) a) n) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (AddCommMonoid.toAddMonoid.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (_inst_2 (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (fun (_x : A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (AddCommMonoid.toAddMonoid.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (_inst_2 (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (AddMonoid.toAddZeroClass.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (AddCommMonoid.toAddMonoid.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (_inst_2 (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (AddCommMonoid.toAddMonoid.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (_inst_2 (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (AddCommMonoid.toAddMonoid.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (_inst_2 (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (AddCommMonoid.toAddMonoid.{u1} (A (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (_inst_2 (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (HSMul.hSMul.{0, u2, u2} Nat ι ι (instHSMul.{0, u2} Nat ι (AddMonoid.SMul.{u2} ι _inst_3)) n i)) (GradedMonoid.GMonoid.gnpow.{u2, u1} ι A _inst_3 (DirectSum.GSemiring.toGMonoid.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) n i a))
+Case conversion may be inaccurate. Consider using '#align direct_sum.of_pow DirectSum.ofPowₓ'. -/
+theorem ofPow {i} (a : A i) (n : ℕ) :
     of _ i a ^ n = of _ (n • i) (GradedMonoid.GMonoid.gnpow _ a) :=
   by
   induction' n with n
   · exact of_eq_of_graded_monoid_eq (pow_zero <| GradedMonoid.mk _ a).symm
   · rw [pow_succ, n_ih, of_mul_of]
     exact of_eq_of_graded_monoid_eq (pow_succ (GradedMonoid.mk _ a) n).symm
-#align direct_sum.of_pow DirectSum.of_pow
-
-theorem of_list_dProd {α} (l : List α) (fι : α → ι) (fA : ∀ a, A (fι a)) :
+#align direct_sum.of_pow DirectSum.ofPow
+
+/- warning: direct_sum.of_list_dprod -> DirectSum.ofList_dProd is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] {α : Type.{u3}} (l : List.{u3} α) (fι : α -> ι) (fA : forall (a : α), A (fι a)), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) ((fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) ((fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u2} (A (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) ((fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, u3} ι α _inst_3 l fι)) (List.dProd.{u1, u3, u2} ι α A _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) l fι fA)) (List.prod.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (Distrib.toHasMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.nonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) (DirectSum.GSemiring.toGnonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_4)))) (DirectSum.hasOne.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (GradedMonoid.GMonoid.toGhasOne.{u1, u2} ι (fun (i : ι) => A i) _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (List.map.{u3, max u1 u2} α (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (fun (a : α) => coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (fι a)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (fι a)) (AddCommMonoid.toAddMonoid.{u2} (A (fι a)) ((fun (i : ι) => _inst_2 i) (fι a)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (fι a)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (fι a)) (AddCommMonoid.toAddMonoid.{u2} (A (fι a)) ((fun (i : ι) => _inst_2 i) (fι a)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A (fι a)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (fι a)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (fι a)) (AddCommMonoid.toAddMonoid.{u2} (A (fι a)) ((fun (i : ι) => _inst_2 i) (fι a)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (fι a)) (fA a)) l))
+but is expected to have type
+  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i)] {α : Type.{u3}} (l : List.{u3} α) (fι : α -> ι) (fA : forall (a : α), A (fι a)), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (List.dProd.{u2, u3, u1} ι α A _inst_3 (DirectSum.GSemiring.toGMonoid.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) l fι fA)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (_inst_2 (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (fun (_x : A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (_inst_2 (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (_inst_2 (List.dProdIndex.{u2, u3} ι α _inst_3 l fι))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (_inst_2 (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (_inst_2 (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (_inst_2 (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (List.dProdIndex.{u2, u3} ι α _inst_3 l fι)) (List.dProd.{u2, u3, u1} ι α A _inst_3 (DirectSum.GSemiring.toGMonoid.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) l fι fA)) (List.prod.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.instNonUnitalNonAssocSemiringDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toAdd.{u2} ι (AddMonoid.toAddZeroClass.{u2} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u2, u1} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (DirectSum.instOneDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddMonoid.toZero.{u2} ι _inst_3) (DirectSum.GSemiring.toGOne.{u2, u1} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) (fun (i : ι) => _inst_2 i)) (List.map.{u3, max u2 u1} α (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (fun (a : α) => FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (fι a)) (fun (_x : A (fι a)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (fι a)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (fι a)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (fι a)) (fA a)) l))
+Case conversion may be inaccurate. Consider using '#align direct_sum.of_list_dprod DirectSum.ofList_dProdₓ'. -/
+theorem ofList_dProd {α} (l : List α) (fι : α → ι) (fA : ∀ a, A (fι a)) :
     of A _ (l.dProd fι fA) = (l.map fun a => of A (fι a) (fA a)).Prod :=
   by
   induction l
@@ -281,8 +363,14 @@ theorem of_list_dProd {α} (l : List α) (fι : α → ι) (fA : ∀ a, A (fι a
     rfl
   · simp only [List.map_cons, List.prod_cons, List.dProd_cons, ← l_ih, DirectSum.of_mul_of]
     rfl
-#align direct_sum.of_list_dprod DirectSum.of_list_dProd
-
+#align direct_sum.of_list_dprod DirectSum.ofList_dProd
+
+/- warning: direct_sum.list_prod_of_fn_of_eq_dprod -> DirectSum.list_prod_ofFn_of_eq_dProd is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] (n : Nat) (fι : (Fin n) -> ι) (fA : forall (a : Fin n), A (fι a)), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (List.prod.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (Distrib.toHasMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.nonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) (DirectSum.GSemiring.toGnonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_4)))) (DirectSum.hasOne.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (GradedMonoid.GMonoid.toGhasOne.{u1, u2} ι (fun (i : ι) => A i) _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (List.ofFn.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) n (fun (a : Fin n) => coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (fι a)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (fι a)) (AddCommMonoid.toAddMonoid.{u2} (A (fι a)) ((fun (i : ι) => _inst_2 i) (fι a)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (fι a)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (fι a)) (AddCommMonoid.toAddMonoid.{u2} (A (fι a)) ((fun (i : ι) => _inst_2 i) (fι a)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A (fι a)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (fι a)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (fι a)) (AddCommMonoid.toAddMonoid.{u2} (A (fι a)) ((fun (i : ι) => _inst_2 i) (fι a)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (fι a)) (fA a)))) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) ((fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) ((fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u2} (A (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) ((fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (List.dProdIndex.{u1, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (List.dProd.{u1, 0, u2} ι (Fin n) A _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) (List.finRange n) fι fA))
+but is expected to have type
+  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i)] (n : Nat) (fι : (Fin n) -> ι) (fA : forall (a : Fin n), A (fι a)), Eq.{max (succ u2) (succ u1)} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (List.prod.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.instNonUnitalNonAssocSemiringDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toAdd.{u2} ι (AddMonoid.toAddZeroClass.{u2} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u2, u1} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (DirectSum.instOneDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddMonoid.toZero.{u2} ι _inst_3) (DirectSum.GSemiring.toGOne.{u2, u1} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) (fun (i : ι) => _inst_2 i)) (List.ofFn.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) n (fun (a : Fin n) => FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (fι a)) (fun (_x : A (fι a)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (fι a)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (fι a)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (fι a)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (fι a)) (AddCommMonoid.toAddMonoid.{u1} (A (fι a)) (_inst_2 (fι a)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (fι a)) (fA a)))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (_inst_2 (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (fun (_x : A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (_inst_2 (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (_inst_2 (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (_inst_2 (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (_inst_2 (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (AddCommMonoid.toAddMonoid.{u1} (A (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (_inst_2 (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (List.dProdIndex.{u2, 0} ι (Fin n) _inst_3 (List.finRange n) fι)) (List.dProd.{u2, 0, u1} ι (Fin n) A _inst_3 (DirectSum.GSemiring.toGMonoid.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4) (List.finRange n) fι fA))
+Case conversion may be inaccurate. Consider using '#align direct_sum.list_prod_of_fn_of_eq_dprod DirectSum.list_prod_ofFn_of_eq_dProdₓ'. -/
 theorem list_prod_ofFn_of_eq_dProd (n : ℕ) (fι : Fin n → ι) (fA : ∀ a, A (fι a)) :
     (List.ofFn fun a => of A (fι a) (fA a)).Prod = of A _ ((List.finRange n).dProd fι fA) := by
   rw [List.ofFn_eq_map, of_list_dprod]
@@ -290,6 +378,7 @@ theorem list_prod_ofFn_of_eq_dProd (n : ℕ) (fι : Fin n → ι) (fA : ∀ a, A
 
 open BigOperators
 
+#print DirectSum.mul_eq_dfinsupp_sum /-
 theorem mul_eq_dfinsupp_sum [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a' : ⨁ i, A i) :
     a * a' = a.Sum fun i ai => a'.Sum fun j aj => DirectSum.of _ _ <| GradedMonoid.GMul.mul ai aj :=
   by
@@ -297,8 +386,10 @@ theorem mul_eq_dfinsupp_sum [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a'
   simpa only [MulHom, to_add_monoid, Dfinsupp.liftAddHom_apply, Dfinsupp.sumAddHom_apply,
     AddMonoidHom.dfinsupp_sum_apply, flip_apply, AddMonoidHom.dfinsupp_sumAddHom_apply]
 #align direct_sum.mul_eq_dfinsupp_sum DirectSum.mul_eq_dfinsupp_sum
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print DirectSum.mul_eq_sum_support_ghas_mul /-
 /-- A heavily unfolded version of the definition of multiplication -/
 theorem mul_eq_sum_support_ghas_mul [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a' : ⨁ i, A i) :
     a * a' =
@@ -306,21 +397,27 @@ theorem mul_eq_sum_support_ghas_mul [∀ (i : ι) (x : A i), Decidable (x ≠ 0)
         DirectSum.of _ _ (GradedMonoid.GMul.mul (a ij.fst) (a' ij.snd)) :=
   by simp only [mul_eq_dfinsupp_sum, Dfinsupp.sum, Finset.sum_product]
 #align direct_sum.mul_eq_sum_support_ghas_mul DirectSum.mul_eq_sum_support_ghas_mul
+-/
 
 end Semiring
 
 section CommSemiring
 
-variable [∀ i, AddCommMonoid (A i)] [AddCommMonoid ι] [GcommSemiring A]
+variable [∀ i, AddCommMonoid (A i)] [AddCommMonoid ι] [GCommSemiring A]
 
-private theorem mul_comm (a b : ⨁ i, A i) : a * b = b * a :=
+/- warning: direct_sum.mul_comm clashes with [anonymous] -> [anonymous]
+Case conversion may be inaccurate. Consider using '#align direct_sum.mul_comm [anonymous]ₓ'. -/
+#print [anonymous] /-
+private theorem [anonymous] (a b : ⨁ i, A i) : a * b = b * a :=
   by
   suffices mulHom A = (mulHom A).flip from AddMonoidHom.congr_fun (AddMonoidHom.congr_fun this a) b
   apply add_hom_ext; intro ai ax; apply add_hom_ext; intro bi bx
   rw [AddMonoidHom.flip_apply, mul_hom_of_of, mul_hom_of_of]
   exact of_eq_of_graded_monoid_eq (gcomm_semiring.mul_comm ⟨ai, ax⟩ ⟨bi, bx⟩)
-#align direct_sum.mul_comm direct_sum.mul_comm
+#align direct_sum.mul_comm [anonymous]
+-/
 
+#print DirectSum.commSemiring /-
 /-- The `comm_semiring` structure derived from `gcomm_semiring A`. -/
 instance commSemiring : CommSemiring (⨁ i, A i) :=
   { DirectSum.semiring _ with
@@ -330,13 +427,15 @@ instance commSemiring : CommSemiring (⨁ i, A i) :=
     add := (· + ·)
     mul_comm := mul_comm A }
 #align direct_sum.comm_semiring DirectSum.commSemiring
+-/
 
 end CommSemiring
 
 section NonUnitalNonAssocRing
 
-variable [∀ i, AddCommGroup (A i)] [Add ι] [GnonUnitalNonAssocSemiring A]
+variable [∀ i, AddCommGroup (A i)] [Add ι] [GNonUnitalNonAssocSemiring A]
 
+#print DirectSum.nonAssocRing /-
 /-- The `ring` derived from `gsemiring A`. -/
 instance nonAssocRing : NonUnitalNonAssocRing (⨁ i, A i) :=
   { DirectSum.nonUnitalNonAssocSemiring _,
@@ -346,13 +445,15 @@ instance nonAssocRing : NonUnitalNonAssocRing (⨁ i, A i) :=
     add := (· + ·)
     neg := Neg.neg }
 #align direct_sum.non_assoc_ring DirectSum.nonAssocRing
+-/
 
 end NonUnitalNonAssocRing
 
 section Ring
 
-variable [∀ i, AddCommGroup (A i)] [AddMonoid ι] [Gring A]
+variable [∀ i, AddCommGroup (A i)] [AddMonoid ι] [GRing A]
 
+#print DirectSum.ring /-
 /-- The `ring` derived from `gsemiring A`. -/
 instance ring : Ring (⨁ i, A i) :=
   { DirectSum.semiring _,
@@ -362,18 +463,20 @@ instance ring : Ring (⨁ i, A i) :=
     zero := 0
     add := (· + ·)
     neg := Neg.neg
-    intCast := fun z => of _ _ (Gring.intCast z)
-    intCast_ofNat := fun z => congr_arg _ <| Gring.intCast_of_nat _
+    intCast := fun z => of _ _ (GRing.intCast z)
+    intCast_ofNat := fun z => congr_arg _ <| GRing.intCast_of_nat _
     intCast_negSucc := fun z =>
-      (congr_arg _ <| Gring.intCast_neg_succ_of_nat _).trans (map_neg _ _) }
+      (congr_arg _ <| GRing.intCast_neg_succ_of_nat _).trans (map_neg _ _) }
 #align direct_sum.ring DirectSum.ring
+-/
 
 end Ring
 
 section CommRing
 
-variable [∀ i, AddCommGroup (A i)] [AddCommMonoid ι] [GcommRing A]
+variable [∀ i, AddCommGroup (A i)] [AddCommMonoid ι] [GCommRing A]
 
+#print DirectSum.commRing /-
 /-- The `comm_ring` derived from `gcomm_semiring A`. -/
 instance commRing : CommRing (⨁ i, A i) :=
   { DirectSum.ring _,
@@ -384,6 +487,7 @@ instance commRing : CommRing (⨁ i, A i) :=
     add := (· + ·)
     neg := Neg.neg }
 #align direct_sum.comm_ring DirectSum.commRing
+-/
 
 end CommRing
 
@@ -400,6 +504,12 @@ section One
 
 variable [Zero ι] [GradedMonoid.GOne A] [∀ i, AddCommMonoid (A i)]
 
+/- warning: direct_sum.of_zero_one -> DirectSum.of_zero_one is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : Zero.{u1} ι] [_inst_3 : GradedMonoid.GOne.{u1, u2} ι A _inst_2] [_inst_4 : forall (i : ι), AddCommMonoid.{u2} (A i)], Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (_inst_4 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (_inst_4 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (_inst_4 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_4 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι _inst_2)))) (OfNat.ofNat.{u2} (A (Zero.zero.{u1} ι _inst_2)) 1 (OfNat.mk.{u2} (A (Zero.zero.{u1} ι _inst_2)) 1 (One.one.{u2} (A (Zero.zero.{u1} ι _inst_2)) (GradedMonoid.GradeZero.one.{u1, u2} ι A _inst_2 _inst_3))))) (OfNat.ofNat.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) 1 (OfNat.mk.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) 1 (One.one.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (DirectSum.hasOne.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_2 _inst_3 (fun (i : ι) => _inst_4 i)))))
+but is expected to have type
+  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : Zero.{u2} ι] [_inst_3 : GradedMonoid.GOne.{u2, u1} ι A _inst_2] [_inst_4 : forall (i : ι), AddCommMonoid.{u1} (A i)], Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (OfNat.ofNat.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) 1 (One.toOfNat1.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (GradedMonoid.GradeZero.one.{u2, u1} ι A _inst_2 _inst_3)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (_inst_4 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (_inst_4 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (_inst_4 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2)))))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (_inst_4 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (_inst_4 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (_inst_4 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_4 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (OfNat.ofNat.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) 1 (One.toOfNat1.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (GradedMonoid.GradeZero.one.{u2, u1} ι A _inst_2 _inst_3)))) (OfNat.ofNat.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (OfNat.ofNat.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) 1 (One.toOfNat1.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (GradedMonoid.GradeZero.one.{u2, u1} ι A _inst_2 _inst_3)))) 1 (One.toOfNat1.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_4 i)) (OfNat.ofNat.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) 1 (One.toOfNat1.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι _inst_2))) (GradedMonoid.GradeZero.one.{u2, u1} ι A _inst_2 _inst_3)))) (DirectSum.instOneDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_2 _inst_3 (fun (i : ι) => _inst_4 i))))
+Case conversion may be inaccurate. Consider using '#align direct_sum.of_zero_one DirectSum.of_zero_oneₓ'. -/
 @[simp]
 theorem of_zero_one : of _ 0 (1 : A 0) = 1 :=
   rfl
@@ -409,35 +519,57 @@ end One
 
 section Mul
 
-variable [AddZeroClass ι] [∀ i, AddCommMonoid (A i)] [GnonUnitalNonAssocSemiring A]
+variable [AddZeroClass ι] [∀ i, AddCommMonoid (A i)] [GNonUnitalNonAssocSemiring A]
 
+/- warning: direct_sum.of_zero_smul -> DirectSum.of_zero_smul is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : AddZeroClass.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (AddZeroClass.toHasAdd.{u1} ι _inst_2) (fun (i : ι) => _inst_3 i)] {i : ι} (a : A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (b : A i), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) (SMul.smul.{u2, u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (A i) (GradedMonoid.GradeZero.smul.{u1, u2} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGhasMul.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (AddZeroClass.toHasAdd.{u1} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4) i) a b)) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instHMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (Distrib.toHasMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.nonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4)))) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) a) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) b))
+but is expected to have type
+  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : AddZeroClass.{u2} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u2, u1} ι A (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i)] {i : ι} (a : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (b : A i), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (HSMul.hSMul.{u1, u1, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A i) (A i) (instHSMul.{u1, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A i) (GradedMonoid.GradeZero.smul.{u2, u1} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u2, u1} ι A (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4) i)) a b)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i)))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) (HSMul.hSMul.{u1, u1, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A i) (A i) (instHSMul.{u1, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A i) (GradedMonoid.GradeZero.smul.{u2, u1} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u2, u1} ι A (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4) i)) a b)) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) b) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (instHMul.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (DirectSum.instNonUnitalNonAssocSemiringDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2))))))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A i) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i)))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u1 u2} (A i) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A i) (AddCommMonoid.toAddMonoid.{u1} (A i) (_inst_3 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) i) b))
+Case conversion may be inaccurate. Consider using '#align direct_sum.of_zero_smul DirectSum.of_zero_smulₓ'. -/
 @[simp]
 theorem of_zero_smul {i} (a : A 0) (b : A i) : of _ _ (a • b) = of _ _ a * of _ _ b :=
   (of_eq_of_gradedMonoid_eq (GradedMonoid.mk_zero_smul a b)).trans (of_mul_of _ _).symm
 #align direct_sum.of_zero_smul DirectSum.of_zero_smul
 
+/- warning: direct_sum.of_zero_mul -> DirectSum.of_zero_mul is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : AddZeroClass.{u1} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (AddZeroClass.toHasAdd.{u1} ι _inst_2) (fun (i : ι) => _inst_3 i)] (a : A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (b : A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (HMul.hMul.{u2, u2, u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (instHMul.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (GradedMonoid.GradeZero.mul.{u1, u2} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGhasMul.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (AddZeroClass.toHasAdd.{u1} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4))) a b)) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instHMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (Distrib.toHasMul.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (NonUnitalNonAssocSemiring.toDistrib.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.nonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4)))) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) a) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) (_inst_3 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι _inst_2))))) b))
+but is expected to have type
+  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : AddZeroClass.{u2} ι] [_inst_3 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_4 : DirectSum.GNonUnitalNonAssocSemiring.{u2, u1} ι A (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i)] (a : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (b : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (HMul.hMul.{u1, u1, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (instHMul.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (GradedMonoid.GradeZero.mul.{u2, u1} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u2, u1} ι A (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4))) a b)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2))))))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (HMul.hMul.{u1, u1, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (instHMul.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (GradedMonoid.GradeZero.mul.{u2, u1} ι A _inst_2 (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u2, u1} ι A (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4))) a b)) (HMul.hMul.{max u2 u1, max u2 u1, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) b) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (instHMul.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (NonUnitalNonAssocSemiring.toMul.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) a) (DirectSum.instNonUnitalNonAssocSemiringDirectSum.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toAdd.{u2} ι _inst_2) (fun (i : ι) => _inst_3 i) _inst_4))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2))))))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) _x) (AddHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2))))))) (AddZeroClass.toAdd.{max u1 u2} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u2, u1, max u1 u2} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) (_inst_3 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_3 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_3 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddZeroClass.toZero.{u2} ι _inst_2)))) b))
+Case conversion may be inaccurate. Consider using '#align direct_sum.of_zero_mul DirectSum.of_zero_mulₓ'. -/
 @[simp]
 theorem of_zero_mul (a b : A 0) : of _ 0 (a * b) = of _ 0 a * of _ 0 b :=
   of_zero_smul A a b
 #align direct_sum.of_zero_mul DirectSum.of_zero_mul
 
+#print DirectSum.GradeZero.nonUnitalNonAssocSemiring /-
 instance GradeZero.nonUnitalNonAssocSemiring : NonUnitalNonAssocSemiring (A 0) :=
   Function.Injective.nonUnitalNonAssocSemiring (of A 0) Dfinsupp.single_injective (of A 0).map_zero
     (of A 0).map_add (of_zero_mul A) fun x n => Dfinsupp.single_smul n x
 #align direct_sum.grade_zero.non_unital_non_assoc_semiring DirectSum.GradeZero.nonUnitalNonAssocSemiring
+-/
 
+#print DirectSum.GradeZero.smulWithZero /-
 instance GradeZero.smulWithZero (i : ι) : SMulWithZero (A 0) (A i) :=
   by
   letI := SMulWithZero.compHom (⨁ i, A i) (of A 0).toZeroHom
   refine' dfinsupp.single_injective.smul_with_zero (of A i).toZeroHom (of_zero_smul A)
 #align direct_sum.grade_zero.smul_with_zero DirectSum.GradeZero.smulWithZero
+-/
 
 end Mul
 
 section Semiring
 
-variable [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [Gsemiring A]
+variable [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A]
 
+/- warning: direct_sum.of_zero_pow -> DirectSum.of_zero_pow is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] (a : A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (n : Nat), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (HPow.hPow.{u2, 0, u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) Nat (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (instHPow.{u2, 0} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) Nat (GradedMonoid.Nat.hasPow.{u1, u2} ι A _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) a n)) (HPow.hPow.{max u1 u2, 0, max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) Nat (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instHPow.{max u1 u2, 0} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) Nat (Monoid.Pow.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (MonoidWithZero.toMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toMonoidWithZero.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))))) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) a) n)
+but is expected to have type
+  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i)] (a : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (n : Nat), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (HPow.hPow.{u1, 0, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) Nat (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (instHPow.{u1, 0} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) Nat (GradedMonoid.instPowOfNatToOfNat0ToZeroNat.{u2, u1} ι A _inst_3 (DirectSum.GSemiring.toGMonoid.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) a n)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (HPow.hPow.{u1, 0, u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) Nat (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (instHPow.{u1, 0} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) Nat (GradedMonoid.instPowOfNatToOfNat0ToZeroNat.{u2, u1} ι A _inst_3 (DirectSum.GSemiring.toGMonoid.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) a n)) (HPow.hPow.{max u2 u1, 0, max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) Nat ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (instHPow.{max u2 u1, 0} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) Nat (Monoid.Pow.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (MonoidWithZero.toMonoid.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (Semiring.toMonoidWithZero.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (DirectSum.semiring.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) a) n)
+Case conversion may be inaccurate. Consider using '#align direct_sum.of_zero_pow DirectSum.of_zero_powₓ'. -/
 @[simp]
 theorem of_zero_pow (a : A 0) : ∀ n : ℕ, of _ 0 (a ^ n) = of _ 0 a ^ n
   | 0 => by rw [pow_zero, pow_zero, DirectSum.of_zero_one]
@@ -445,27 +577,37 @@ theorem of_zero_pow (a : A 0) : ∀ n : ℕ, of _ 0 (a ^ n) = of _ 0 a ^ n
 #align direct_sum.of_zero_pow DirectSum.of_zero_pow
 
 instance : NatCast (A 0) :=
-  ⟨Gsemiring.natCast⟩
-
+  ⟨GSemiring.natCast⟩
+
+/- warning: direct_sum.of_nat_cast -> DirectSum.ofNatCast is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] (n : Nat), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (HasLiftT.mk.{1, succ u2} Nat (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (CoeTCₓ.coe.{1, succ u2} Nat (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (Nat.castCoe.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.hasNatCast.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) n)) ((fun (a : Type) (b : Type.{max u1 u2}) [self : HasLiftT.{1, succ (max u1 u2)} a b] => self.0) Nat (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (HasLiftT.mk.{1, succ (max u1 u2)} Nat (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (CoeTCₓ.coe.{1, succ (max u1 u2)} Nat (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (Nat.castCoe.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoidWithOne.toNatCast.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_3 _inst_4)))))))) n)
+but is expected to have type
+  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : forall (i : ι), AddCommMonoid.{u1} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i)] (n : Nat), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Nat.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instNatCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (Nat.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instNatCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (Nat.cast.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Nat.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instNatCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (Semiring.toNatCast.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Nat.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instNatCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (DirectSum.semiring.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) n)
+Case conversion may be inaccurate. Consider using '#align direct_sum.of_nat_cast DirectSum.ofNatCastₓ'. -/
 @[simp]
-theorem of_nat_cast (n : ℕ) : of A 0 n = n :=
+theorem ofNatCast (n : ℕ) : of A 0 n = n :=
   rfl
-#align direct_sum.of_nat_cast DirectSum.of_nat_cast
+#align direct_sum.of_nat_cast DirectSum.ofNatCast
 
+#print DirectSum.GradeZero.semiring /-
 /-- The `semiring` structure derived from `gsemiring A`. -/
 instance GradeZero.semiring : Semiring (A 0) :=
   Function.Injective.semiring (of A 0) Dfinsupp.single_injective (of A 0).map_zero (of_zero_one A)
-    (of A 0).map_add (of_zero_mul A) (of A 0).map_nsmul (fun x n => of_zero_pow _ _ _)
-    (of_nat_cast A)
+    (of A 0).map_add (of_zero_mul A) (of A 0).map_nsmul (fun x n => of_zero_pow _ _ _) (ofNatCast A)
 #align direct_sum.grade_zero.semiring DirectSum.GradeZero.semiring
+-/
 
+#print DirectSum.ofZeroRingHom /-
 /-- `of A 0` is a `ring_hom`, using the `direct_sum.grade_zero.semiring` structure. -/
 def ofZeroRingHom : A 0 →+* ⨁ i, A i :=
   { of _ 0 with
     map_one' := of_zero_one A
     map_mul' := of_zero_mul A }
 #align direct_sum.of_zero_ring_hom DirectSum.ofZeroRingHom
+-/
 
+#print DirectSum.GradeZero.module /-
 /-- Each grade `A i` derives a `A 0`-module structure from `gsemiring A`. Note that this results
 in an overall `module (A 0) (⨁ i, A i)` structure via `direct_sum.module`.
 -/
@@ -473,26 +615,30 @@ instance GradeZero.module {i} : Module (A 0) (A i) :=
   letI := Module.compHom (⨁ i, A i) (of_zero_ring_hom A)
   dfinsupp.single_injective.module (A 0) (of A i) fun a => of_zero_smul A a
 #align direct_sum.grade_zero.module DirectSum.GradeZero.module
+-/
 
 end Semiring
 
 section CommSemiring
 
-variable [∀ i, AddCommMonoid (A i)] [AddCommMonoid ι] [GcommSemiring A]
+variable [∀ i, AddCommMonoid (A i)] [AddCommMonoid ι] [GCommSemiring A]
 
+#print DirectSum.GradeZero.commSemiring /-
 /-- The `comm_semiring` structure derived from `gcomm_semiring A`. -/
 instance GradeZero.commSemiring : CommSemiring (A 0) :=
   Function.Injective.commSemiring (of A 0) Dfinsupp.single_injective (of A 0).map_zero
     (of_zero_one A) (of A 0).map_add (of_zero_mul A) (fun x n => Dfinsupp.single_smul n x)
-    (fun x n => of_zero_pow _ _ _) (of_nat_cast A)
+    (fun x n => of_zero_pow _ _ _) (ofNatCast A)
 #align direct_sum.grade_zero.comm_semiring DirectSum.GradeZero.commSemiring
+-/
 
 end CommSemiring
 
 section Ring
 
-variable [∀ i, AddCommGroup (A i)] [AddZeroClass ι] [GnonUnitalNonAssocSemiring A]
+variable [∀ i, AddCommGroup (A i)] [AddZeroClass ι] [GNonUnitalNonAssocSemiring A]
 
+#print DirectSum.GradeZero.nonUnitalNonAssocRing /-
 /-- The `non_unital_non_assoc_ring` derived from `gnon_unital_non_assoc_semiring A`. -/
 instance GradeZero.nonUnitalNonAssocRing : NonUnitalNonAssocRing (A 0) :=
   Function.Injective.nonUnitalNonAssocRing (of A 0) Dfinsupp.single_injective (of A 0).map_zero
@@ -504,21 +650,29 @@ instance GradeZero.nonUnitalNonAssocRing : NonUnitalNonAssocRing (A 0) :=
     letI : ∀ i, DistribMulAction ℤ (A i) := fun i => inferInstance
     Dfinsupp.single_smul n x
 #align direct_sum.grade_zero.non_unital_non_assoc_ring DirectSum.GradeZero.nonUnitalNonAssocRing
+-/
 
 end Ring
 
 section Ring
 
-variable [∀ i, AddCommGroup (A i)] [AddMonoid ι] [Gring A]
+variable [∀ i, AddCommGroup (A i)] [AddMonoid ι] [GRing A]
 
 instance : IntCast (A 0) :=
-  ⟨Gring.intCast⟩
-
+  ⟨GRing.intCast⟩
+
+/- warning: direct_sum.of_int_cast -> DirectSum.ofIntCast is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] (A : ι -> Type.{u2}) [_inst_2 : forall (i : ι), AddCommGroup.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GRing.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] (n : Int), Eq.{succ (max u1 u2)} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Int (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (HasLiftT.mk.{1, succ u2} Int (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (CoeTCₓ.coe.{1, succ u2} Int (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (Int.castCoe.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (DirectSum.hasIntCast.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) n)) ((fun (a : Type) (b : Type.{max u1 u2}) [self : HasLiftT.{1, succ (max u1 u2)} a b] => self.0) Int (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (HasLiftT.mk.{1, succ (max u1 u2)} Int (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (CoeTCₓ.coe.{1, succ (max u1 u2)} Int (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (Int.castCoe.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddGroupWithOne.toHasIntCast.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (AddCommGroupWithOne.toAddGroupWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (Ring.toAddCommGroupWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u2} (A i) (_inst_2 i)) i)) (DirectSum.ring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))))))) n)
+but is expected to have type
+  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] (A : ι -> Type.{u1}) [_inst_2 : forall (i : ι), AddCommGroup.{u1} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GRing.{u2, u1} ι A _inst_3 (fun (i : ι) => _inst_2 i)] (n : Int), Eq.{max (succ u2) (succ u1)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (Int.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instIntCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, max (succ u2) (succ u1)} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommGroup.toAddCommMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i)))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (fun (_x : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) _x) (AddHomClass.toFunLike.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommGroup.toAddCommMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i)))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddZeroClass.toAdd.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommGroup.toAddCommMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))))))) (AddZeroClass.toAdd.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i)))))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u1, max u2 u1} (AddMonoidHom.{u1, max u1 u2} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommGroup.toAddCommMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i)))))) (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommGroup.toAddCommMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))))) (AddMonoidHom.addMonoidHomClass.{u1, max u2 u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (AddCommGroup.toAddCommMonoid.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3))))))) (AddMonoid.toAddZeroClass.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (AddCommMonoid.toAddMonoid.{max u2 u1} (DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (instAddCommMonoidDirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i)))))))) (DirectSum.of.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i)) (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (Int.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instIntCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (Int.cast.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (Int.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instIntCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (Ring.toIntCast.{max u2 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) => DirectSum.{u2, u1} ι (fun (i : ι) => A i) (fun (i : ι) => AddCommGroup.toAddCommMonoid.{u1} (A i) (_inst_2 i))) (Int.cast.{u1} (A (OfNat.ofNat.{u2} ι 0 (Zero.toOfNat0.{u2} ι (AddMonoid.toZero.{u2} ι _inst_3)))) (DirectSum.instIntCastOfNatToOfNat0ToZero.{u2, u1} ι A (fun (i : ι) => _inst_2 i) _inst_3 _inst_4) n)) (DirectSum.ring.{u2, u1} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) n)
+Case conversion may be inaccurate. Consider using '#align direct_sum.of_int_cast DirectSum.ofIntCastₓ'. -/
 @[simp]
-theorem of_int_cast (n : ℤ) : of A 0 n = n :=
+theorem ofIntCast (n : ℤ) : of A 0 n = n :=
   rfl
-#align direct_sum.of_int_cast DirectSum.of_int_cast
+#align direct_sum.of_int_cast DirectSum.ofIntCast
 
+#print DirectSum.GradeZero.ring /-
 /-- The `ring` derived from `gsemiring A`. -/
 instance GradeZero.ring : Ring (A 0) :=
   Function.Injective.ring (of A 0) Dfinsupp.single_injective (of A 0).map_zero (of_zero_one A)
@@ -529,15 +683,17 @@ instance GradeZero.ring : Ring (A 0) :=
     (fun x n =>
       letI : ∀ i, DistribMulAction ℤ (A i) := fun i => inferInstance
       Dfinsupp.single_smul n x)
-    (fun x n => of_zero_pow _ _ _) (of_nat_cast A) (of_int_cast A)
+    (fun x n => of_zero_pow _ _ _) (ofNatCast A) (ofIntCast A)
 #align direct_sum.grade_zero.ring DirectSum.GradeZero.ring
+-/
 
 end Ring
 
 section CommRing
 
-variable [∀ i, AddCommGroup (A i)] [AddCommMonoid ι] [GcommRing A]
+variable [∀ i, AddCommGroup (A i)] [AddCommMonoid ι] [GCommRing A]
 
+#print DirectSum.GradeZero.commRing /-
 /-- The `comm_ring` derived from `gcomm_semiring A`. -/
 instance GradeZero.commRing : CommRing (A 0) :=
   Function.Injective.commRing (of A 0) Dfinsupp.single_injective (of A 0).map_zero (of_zero_one A)
@@ -548,8 +704,9 @@ instance GradeZero.commRing : CommRing (A 0) :=
     (fun x n =>
       letI : ∀ i, DistribMulAction ℤ (A i) := fun i => inferInstance
       Dfinsupp.single_smul n x)
-    (fun x n => of_zero_pow _ _ _) (of_nat_cast A) (of_int_cast A)
+    (fun x n => of_zero_pow _ _ _) (ofNatCast A) (ofIntCast A)
 #align direct_sum.grade_zero.comm_ring DirectSum.GradeZero.commRing
+-/
 
 end CommRing
 
@@ -557,10 +714,16 @@ end GradeZero
 
 section ToSemiring
 
-variable {R : Type _} [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [Gsemiring A] [Semiring R]
+variable {R : Type _} [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A] [Semiring R]
 
 variable {A}
 
+/- warning: direct_sum.ring_hom_ext' -> DirectSum.ringHom_ext' is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} {R : Type.{u3}} [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u3} R] {{F : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)}} {{G : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)}}, (forall (i : ι), Eq.{max (succ u3) (succ u2)} (AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (AddMonoidHom.comp.{u2, max u1 u2, u3} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) ((fun (a : Sort.{max (succ (max u1 u2)) (succ u3)}) (b : Sort.{max (succ u3) (succ (max u1 u2))}) [self : HasLiftT.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} a b] => self.0) (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (HasLiftT.mk.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (CoeTCₓ.coe.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (AddMonoidHom.hasCoeT.{max u1 u2, u3, max (max u1 u2) u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) (RingHomClass.toAddMonoidHomClass.{max (max u1 u2) u3, max u1 u2, u3} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5) (RingHom.ringHomClass.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) F) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i)) (AddMonoidHom.comp.{u2, max u1 u2, u3} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) ((fun (a : Sort.{max (succ (max u1 u2)) (succ u3)}) (b : Sort.{max (succ u3) (succ (max u1 u2))}) [self : HasLiftT.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} a b] => self.0) (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (HasLiftT.mk.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (CoeTCₓ.coe.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (AddMonoidHom.hasCoeT.{max u1 u2, u3, max (max u1 u2) u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) (RingHomClass.toAddMonoidHomClass.{max (max u1 u2) u3, max u1 u2, u3} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5) (RingHom.ringHomClass.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) G) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i))) -> (Eq.{max (succ (max u1 u2)) (succ u3)} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) F G)
+but is expected to have type
+  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] {A : ι -> Type.{u3}} {R : Type.{u1}} [_inst_2 : forall (i : ι), AddCommMonoid.{u3} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u3} ι A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u1} R] {{F : RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)}} {{G : RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)}}, (forall (i : ι), Eq.{max (succ u3) (succ u1)} (AddMonoidHom.{u3, u1} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5)))))) (AddMonoidHom.comp.{u3, max u2 u3, u1} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) (AddMonoidHomClass.toAddMonoidHom.{max u2 u3, u1, max (max u2 u3) u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) (RingHomClass.toAddMonoidHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5) (RingHom.instRingHomClassRingHom.{max u2 u3, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5))) F) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i)) (AddMonoidHom.comp.{u3, max u2 u3, u1} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) (AddMonoidHomClass.toAddMonoidHom.{max u2 u3, u1, max (max u2 u3) u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) (RingHomClass.toAddMonoidHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5) (RingHom.instRingHomClassRingHom.{max u2 u3, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5))) G) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i))) -> (Eq.{max (max (succ u2) (succ u3)) (succ u1)} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) F G)
+Case conversion may be inaccurate. Consider using '#align direct_sum.ring_hom_ext' DirectSum.ringHom_ext'ₓ'. -/
 /-- If two ring homomorphisms from `⨁ i, A i` are equal on each `of A i y`,
 then they are equal.
 
@@ -571,11 +734,18 @@ theorem ringHom_ext' ⦃F G : (⨁ i, A i) →+* R⦄
   RingHom.coe_addMonoidHom_injective <| DirectSum.addHom_ext' h
 #align direct_sum.ring_hom_ext' DirectSum.ringHom_ext'
 
+/- warning: direct_sum.ring_hom_ext -> DirectSum.ringHom_ext is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} {R : Type.{u3}} [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u3} R] {{f : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)}} {{g : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)}}, (forall (i : ι) (x : A i), Eq.{succ u3} R (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (fun (_x : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) => (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) -> R) (RingHom.hasCoeToFun.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) f (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (fun (_x : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) => (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) -> R) (RingHom.hasCoeToFun.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) g (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x))) -> (Eq.{max (succ (max u1 u2)) (succ u3)} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) f g)
+but is expected to have type
+  forall {ι : Type.{u2}} [_inst_1 : DecidableEq.{succ u2} ι] {A : ι -> Type.{u3}} {R : Type.{u1}} [_inst_2 : forall (i : ι), AddCommMonoid.{u3} (A i)] [_inst_3 : AddMonoid.{u2} ι] [_inst_4 : DirectSum.GSemiring.{u2, u3} ι A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u1} R] {{f : RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)}} {{g : RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)}}, (forall (i : ι) (x : A i), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) (FunLike.coe.{max (succ u2) (succ u3), succ u3, max (succ u2) (succ u3)} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (a : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (AddHomClass.toFunLike.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u2 u3} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (fun (_x : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonUnitalNonAssocSemiring.toMul.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))) (NonUnitalRingHomClass.toMulHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (RingHomClass.toNonUnitalRingHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5) (RingHom.instRingHomClassRingHom.{max u2 u3, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) f (FunLike.coe.{max (succ u2) (succ u3), succ u3, max (succ u2) (succ u3)} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u2 u3} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (fun (_x : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonUnitalNonAssocSemiring.toMul.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5))) (NonUnitalRingHomClass.toMulHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (RingHomClass.toNonUnitalRingHomClass.{max (max u2 u3) u1, max u2 u3, u1} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5) (RingHom.instRingHomClassRingHom.{max u2 u3, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5))))) g (FunLike.coe.{max (succ u2) (succ u3), succ u3, max (succ u2) (succ u3)} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u3, max u2 u3} (AddMonoidHom.{u3, max u3 u2} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u2 u3} (A i) (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x))) -> (Eq.{max (max (succ u2) (succ u3)) (succ u1)} (RingHom.{max u3 u2, u1} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u2 u3} (DirectSum.{u2, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u1} R _inst_5)) f g)
+Case conversion may be inaccurate. Consider using '#align direct_sum.ring_hom_ext DirectSum.ringHom_extₓ'. -/
 /-- Two `ring_hom`s out of a direct sum are equal if they agree on the generators. -/
 theorem ringHom_ext ⦃f g : (⨁ i, A i) →+* R⦄ (h : ∀ i x, f (of A i x) = g (of A i x)) : f = g :=
   ringHom_ext' fun i => AddMonoidHom.ext <| h i
 #align direct_sum.ring_hom_ext DirectSum.ringHom_ext
 
+#print DirectSum.toSemiring /-
 /-- A family of `add_monoid_hom`s preserving `direct_sum.ghas_one.one` and `direct_sum.ghas_mul.mul`
 describes a `ring_hom`s on `⨁ i, A i`. This is a stronger version of `direct_sum.to_monoid`.
 
@@ -602,19 +772,33 @@ def toSemiring (f : ∀ i, A i →+ R) (hone : f _ GradedMonoid.GOne.one = 1)
       rw [of_mul_of, to_add_monoid_of, to_add_monoid_of, to_add_monoid_of]
       exact hmul _ _ }
 #align direct_sum.to_semiring DirectSum.toSemiring
+-/
 
+/- warning: direct_sum.to_semiring_of -> DirectSum.toSemiring_of is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} {R : Type.{u3}} [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u3} R] (f : forall (i : ι), AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (hone : Eq.{succ u3} R (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (GradedMonoid.GOne.one.{u1, u2} ι (fun (i : ι) => A i) (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (GradedMonoid.GMonoid.toGhasOne.{u1, u2} ι (fun (i : ι) => A i) _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)))) (OfNat.ofNat.{u3} R 1 (OfNat.mk.{u3} R 1 (One.one.{u3} R (AddMonoidWithOne.toOne.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))))) (hmul : forall {i : ι} {j : ι} (ai : A i) (aj : A j), Eq.{succ u3} R (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (GradedMonoid.GMul.mul.{u1, u2} ι (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGhasMul.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGnonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (HMul.hMul.{u3, u3, u3} R R R (instHMul.{u3} R (Distrib.toHasMul.{u3} R (NonUnitalNonAssocSemiring.toDistrib.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A i) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f i) ai) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A j) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f j) aj))) (i : ι) (x : A i), Eq.{succ u3} R (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (fun (_x : RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) => (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) -> R) (RingHom.hasCoeToFun.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => (fun (i : ι) => A i) i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (DirectSum.toSemiring.{u1, u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) R (fun (i : ι) => _inst_2 i) _inst_3 _inst_4 _inst_5 f hone hmul) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ u2) (succ (max u1 u2))} (AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (fun (_x : AddMonoidHom.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) => (A i) -> (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))) (AddMonoidHom.hasCoeToFun.{u2, max u1 u2} (A i) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) ((fun (i : ι) => _inst_2 i) i))) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (AddCommMonoid.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i)) (DirectSum.addCommMonoid.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i))))) (DirectSum.of.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => (fun (i : ι) => _inst_2 i) i) i) x)) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A i) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f i) x)
+but is expected to have type
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u3}} {R : Type.{u2}} [_inst_2 : forall (i : ι), AddCommMonoid.{u3} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u3} ι A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u2} R] (f : forall (i : ι), AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (hone : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (fun (_x : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddZeroClass.toAdd.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3))))))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (Semiring.toOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) _inst_5)))) (hmul : forall {i : ι} {j : ι} (ai : A i) (aj : A j), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => R) (GradedMonoid.GMul.mul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (fun (_x : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddZeroClass.toAdd.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j))))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (GradedMonoid.GMul.mul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => R) aj) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (NonUnitalNonAssocSemiring.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (Semiring.toNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) _inst_5)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f i) ai) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) (fun (_x : A j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) R (AddZeroClass.toAdd.{u3} (A j) (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f j) aj))) (i : ι) (x : A i), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) (FunLike.coe.{max (succ u1) (succ u3), succ u3, max (succ u1) (succ u3)} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (a : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) a) (AddHomClass.toFunLike.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u1 u3} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), max (succ u1) (succ u3), succ u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (fun (_x : DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) => R) _x) (MulHomClass.toFunLike.{max (max u1 u3) u2, max u1 u3, u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonUnitalNonAssocSemiring.toMul.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))) (NonUnitalRingHomClass.toMulHomClass.{max (max u1 u3) u2, max u1 u3, u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (RingHomClass.toNonUnitalRingHomClass.{max (max u1 u3) u2, max u1 u3, u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5) (RingHom.instRingHomClassRingHom.{max u1 u3, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (DirectSum.toSemiring.{u1, u3, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) R (fun (i : ι) => _inst_2 i) _inst_3 _inst_4 _inst_5 f hone hmul) (FunLike.coe.{max (succ u1) (succ u3), succ u3, max (succ u1) (succ u3)} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) _x) (AddHomClass.toFunLike.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u3, max u1 u3} (AddMonoidHom.{u3, max u3 u1} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))) (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)))) (AddMonoidHom.addMonoidHomClass.{u3, max u1 u3} (A i) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoid.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (instAddCommMonoidDirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i))))))) (DirectSum.of.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) A (fun (i : ι) => _inst_2 i) i) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f i) x)
+Case conversion may be inaccurate. Consider using '#align direct_sum.to_semiring_of DirectSum.toSemiring_ofₓ'. -/
 @[simp]
 theorem toSemiring_of (f : ∀ i, A i →+ R) (hone hmul) (i : ι) (x : A i) :
     toSemiring f hone hmul (of _ i x) = f _ x :=
   toAddMonoid_of f i x
 #align direct_sum.to_semiring_of DirectSum.toSemiring_of
 
+/- warning: direct_sum.to_semiring_coe_add_monoid_hom -> DirectSum.toSemiring_coe_addMonoidHom is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u2}} {R : Type.{u3}} [_inst_2 : forall (i : ι), AddCommMonoid.{u2} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u3} R] (f : forall (i : ι), AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (hone : Eq.{succ u3} R (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) R (AddMonoid.toAddZeroClass.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (AddCommMonoid.toAddMonoid.{u2} (A (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f (OfNat.ofNat.{u1} ι 0 (OfNat.mk.{u1} ι 0 (Zero.zero.{u1} ι (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)))))) (GradedMonoid.GOne.one.{u1, u2} ι (fun (i : ι) => A i) (AddZeroClass.toHasZero.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (GradedMonoid.GMonoid.toGhasOne.{u1, u2} ι (fun (i : ι) => A i) _inst_3 (DirectSum.GSemiring.toGmonoid.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)))) (OfNat.ofNat.{u3} R 1 (OfNat.mk.{u3} R 1 (One.one.{u3} R (AddMonoidWithOne.toOne.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))))) (hmul : forall {i : ι} {j : ι} (ai : A i) (aj : A j), Eq.{succ u3} R (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (GradedMonoid.GMul.mul.{u1, u2} ι (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGhasMul.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGnonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (HMul.hMul.{u3, u3, u3} R R R (instHMul.{u3} R (Distrib.toHasMul.{u3} R (NonUnitalNonAssocSemiring.toDistrib.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A i) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A i) R (AddMonoid.toAddZeroClass.{u2} (A i) (AddCommMonoid.toAddMonoid.{u2} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f i) ai) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (fun (_x : AddMonoidHom.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) => (A j) -> R) (AddMonoidHom.hasCoeToFun.{u2, u3} (A j) R (AddMonoid.toAddZeroClass.{u2} (A j) (AddCommMonoid.toAddMonoid.{u2} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (f j) aj))), Eq.{max (succ u3) (succ (max u1 u2))} (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoidWithOne.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) ((fun (a : Sort.{max (succ (max u1 u2)) (succ u3)}) (b : Sort.{max (succ u3) (succ (max u1 u2))}) [self : HasLiftT.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} a b] => self.0) (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoidWithOne.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (HasLiftT.mk.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoidWithOne.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (CoeTCₓ.coe.{max (succ (max u1 u2)) (succ u3), max (succ u3) (succ (max u1 u2))} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoidHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoidWithOne.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (AddMonoidHom.hasCoeT.{max u1 u2, u3, max (max u1 u2) u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (AddMonoid.toAddZeroClass.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoidWithOne.toAddMonoid.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{u3} R (AddMonoidWithOne.toAddMonoid.{u3} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} R (NonAssocSemiring.toAddCommMonoidWithOne.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))))) (RingHomClass.toAddMonoidHomClass.{max (max u1 u2) u3, max u1 u2, u3} (RingHom.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)) (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5) (RingHom.ringHomClass.{max u1 u2, u3} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u2} (DirectSum.{u1, u2} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u3} R _inst_5)))))) (DirectSum.toSemiring.{u1, u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) R (fun (i : ι) => _inst_2 i) _inst_3 _inst_4 _inst_5 f hone hmul)) (DirectSum.toAddMonoid.{u1, u2, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R (Semiring.toNonAssocSemiring.{u3} R _inst_5))) f)
+but is expected to have type
+  forall {ι : Type.{u1}} [_inst_1 : DecidableEq.{succ u1} ι] {A : ι -> Type.{u3}} {R : Type.{u2}} [_inst_2 : forall (i : ι), AddCommMonoid.{u3} (A i)] [_inst_3 : AddMonoid.{u1} ι] [_inst_4 : DirectSum.GSemiring.{u1, u3} ι A _inst_3 (fun (i : ι) => _inst_2 i)] [_inst_5 : Semiring.{u2} R] (f : forall (i : ι), AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (hone : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (fun (_x : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddZeroClass.toAdd.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3))))))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) R (AddMonoid.toAddZeroClass.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (AddCommMonoid.toAddMonoid.{u3} (A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (_inst_2 (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) (Semiring.toOne.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (OfNat.ofNat.{u1} ι 0 (Zero.toOfNat0.{u1} ι (AddMonoid.toZero.{u1} ι _inst_3)))) => R) (GradedMonoid.GOne.one.{u1, u3} ι (fun (i : ι) => A i) (AddMonoid.toZero.{u1} ι _inst_3) (DirectSum.GSemiring.toGOne.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4))) _inst_5)))) (hmul : forall {i : ι} {j : ι} (ai : A i) (aj : A j), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => R) (GradedMonoid.GMul.mul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (fun (_x : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddZeroClass.toAdd.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j))))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) R (AddMonoid.toAddZeroClass.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (AddCommMonoid.toAddMonoid.{u3} (A (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (_inst_2 (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f (HAdd.hAdd.{u1, u1, u1} ι ι ι (instHAdd.{u1} ι (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3))) i j)) (GradedMonoid.GMul.mul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (DirectSum.GNonUnitalNonAssocSemiring.toGMul.{u1, u3} ι (fun (i : ι) => A i) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_3)) (fun (i : ι) => _inst_2 i) (DirectSum.GSemiring.toGNonUnitalNonAssocSemiring.{u1, u3} ι (fun (i : ι) => A i) _inst_3 (fun (i : ι) => _inst_2 i) _inst_4)) i j ai aj)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => R) aj) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (NonUnitalNonAssocSemiring.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) (Semiring.toNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) ai) _inst_5)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) (fun (_x : A i) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A i) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddZeroClass.toAdd.{u3} (A i) (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A i) R (AddMonoid.toAddZeroClass.{u3} (A i) (AddCommMonoid.toAddMonoid.{u3} (A i) (_inst_2 i))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f i) ai) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) (fun (_x : A j) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A j) => R) _x) (AddHomClass.toFunLike.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) R (AddZeroClass.toAdd.{u3} (A j) (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j)))) (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddHomClass.{max u3 u2, u3, u2} (AddMonoidHom.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (AddMonoidHom.addMonoidHomClass.{u3, u2} (A j) R (AddMonoid.toAddZeroClass.{u3} (A j) (AddCommMonoid.toAddMonoid.{u3} (A j) (_inst_2 j))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))))) (f j) aj))), Eq.{max (max (succ u1) (succ u3)) (succ u2)} (AddMonoidHom.{max u1 u3, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoidWithOne.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5)))))) (AddMonoidHomClass.toAddMonoidHom.{max u1 u3, u2, max (max u1 u3) u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (AddMonoid.toAddZeroClass.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddMonoidWithOne.toAddMonoid.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (AddCommMonoidWithOne.toAddMonoidWithOne.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (NonAssocSemiring.toAddCommMonoidWithOne.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)))))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))))) (RingHomClass.toAddMonoidHomClass.{max (max u1 u3) u2, max u1 u3, u2} (RingHom.{max u3 u1, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5)) (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5) (RingHom.instRingHomClassRingHom.{max u1 u3, u2} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) R (Semiring.toNonAssocSemiring.{max u1 u3} (DirectSum.{u1, u3} ι (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i)) (DirectSum.semiring.{u1, u3} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) _inst_3 _inst_4)) (Semiring.toNonAssocSemiring.{u2} R _inst_5))) (DirectSum.toSemiring.{u1, u3, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) R (fun (i : ι) => _inst_2 i) _inst_3 _inst_4 _inst_5 f hone hmul)) (DirectSum.toAddMonoid.{u1, u3, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => A i) (fun (i : ι) => _inst_2 i) R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_5))) f)
+Case conversion may be inaccurate. Consider using '#align direct_sum.to_semiring_coe_add_monoid_hom DirectSum.toSemiring_coe_addMonoidHomₓ'. -/
 @[simp]
 theorem toSemiring_coe_addMonoidHom (f : ∀ i, A i →+ R) (hone hmul) :
     (toSemiring f hone hmul : (⨁ i, A i) →+ R) = toAddMonoid f :=
   rfl
 #align direct_sum.to_semiring_coe_add_monoid_hom DirectSum.toSemiring_coe_addMonoidHom
 
+#print DirectSum.liftRingHom /-
 /-- Families of `add_monoid_hom`s preserving `direct_sum.ghas_one.one` and `direct_sum.ghas_mul.mul`
 are isomorphic to `ring_hom`s on `⨁ i, A i`. This is a stronger version of `dfinsupp.lift_add_hom`.
 -/
@@ -644,6 +828,7 @@ def liftRingHom :
     simp only [RingHom.coe_addMonoidHom_mk, DirectSum.toAddMonoid_of, AddMonoidHom.mk_coe,
       AddMonoidHom.comp_apply, to_semiring_coe_add_monoid_hom]
 #align direct_sum.lift_ring_hom DirectSum.liftRingHom
+-/
 
 end ToSemiring
 
@@ -656,25 +841,37 @@ section Uniform
 
 variable (ι)
 
+/- warning: non_unital_non_assoc_semiring.direct_sum_gnon_unital_non_assoc_semiring -> NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring is a dubious translation:
+lean 3 declaration is
+  forall (ι : Type.{u1}) [_inst_1 : DecidableEq.{succ u1} ι] {R : Type.{u2}} [_inst_2 : AddMonoid.{u1} ι] [_inst_3 : NonUnitalNonAssocSemiring.{u2} R], DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => R) (AddZeroClass.toHasAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι _inst_2)) (fun (i : ι) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_3)
+but is expected to have type
+  forall (ι : Type.{u1}) {_inst_1 : Type.{u2}} [R : AddMonoid.{u1} ι] [_inst_2 : NonUnitalNonAssocSemiring.{u2} _inst_1], DirectSum.GNonUnitalNonAssocSemiring.{u1, u2} ι (fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6396 : ι) => _inst_1) (AddZeroClass.toAdd.{u1} ι (AddMonoid.toAddZeroClass.{u1} ι R)) (fun (i : ι) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6396 : ι) => _inst_1) i) _inst_2)
+Case conversion may be inaccurate. Consider using '#align non_unital_non_assoc_semiring.direct_sum_gnon_unital_non_assoc_semiring NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiringₓ'. -/
 /-- A direct sum of copies of a `semiring` inherits the multiplication structure. -/
-instance NonUnitalNonAssocSemiring.directSumGnonUnitalNonAssocSemiring {R : Type _} [AddMonoid ι]
-    [NonUnitalNonAssocSemiring R] : DirectSum.GnonUnitalNonAssocSemiring fun i : ι => R :=
+instance NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring {R : Type _} [AddMonoid ι]
+    [NonUnitalNonAssocSemiring R] : DirectSum.GNonUnitalNonAssocSemiring fun i : ι => R :=
   { Mul.gMul ι with
     mul_zero := fun i j => MulZeroClass.mul_zero
     zero_mul := fun i j => MulZeroClass.zero_mul
     mul_add := fun i j => mul_add
     add_mul := fun i j => add_mul }
-#align non_unital_non_assoc_semiring.direct_sum_gnon_unital_non_assoc_semiring NonUnitalNonAssocSemiring.directSumGnonUnitalNonAssocSemiring
-
+#align non_unital_non_assoc_semiring.direct_sum_gnon_unital_non_assoc_semiring NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring
+
+/- warning: semiring.direct_sum_gsemiring -> Semiring.directSumGSemiring is a dubious translation:
+lean 3 declaration is
+  forall (ι : Type.{u1}) [_inst_1 : DecidableEq.{succ u1} ι] {R : Type.{u2}} [_inst_2 : AddMonoid.{u1} ι] [_inst_3 : Semiring.{u2} R], DirectSum.GSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => R) _inst_2 (fun (i : ι) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_3)))
+but is expected to have type
+  forall (ι : Type.{u1}) {_inst_1 : Type.{u2}} [R : AddMonoid.{u1} ι] [_inst_2 : Semiring.{u2} _inst_1], DirectSum.GSemiring.{u1, u2} ι (fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6437 : ι) => _inst_1) R (fun (i : ι) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6437 : ι) => _inst_1) i) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6437 : ι) => _inst_1) i) (Semiring.toNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6437 : ι) => _inst_1) i) _inst_2)))
+Case conversion may be inaccurate. Consider using '#align semiring.direct_sum_gsemiring Semiring.directSumGSemiringₓ'. -/
 /-- A direct sum of copies of a `semiring` inherits the multiplication structure. -/
-instance Semiring.directSumGsemiring {R : Type _} [AddMonoid ι] [Semiring R] :
-    DirectSum.Gsemiring fun i : ι => R :=
-  { NonUnitalNonAssocSemiring.directSumGnonUnitalNonAssocSemiring ι,
+instance Semiring.directSumGSemiring {R : Type _} [AddMonoid ι] [Semiring R] :
+    DirectSum.GSemiring fun i : ι => R :=
+  { NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring ι,
     Monoid.gMonoid ι with
     natCast := fun n => n
     natCast_zero := Nat.cast_zero
     natCast_succ := Nat.cast_succ }
-#align semiring.direct_sum_gsemiring Semiring.directSumGsemiring
+#align semiring.direct_sum_gsemiring Semiring.directSumGSemiring
 
 open DirectSum
 
@@ -683,12 +880,18 @@ example {R : Type _} [AddMonoid ι] [Semiring R] (i j : ι) (a b : R) :
     (DirectSum.of _ i a * DirectSum.of _ j b : ⨁ i, R) = DirectSum.of _ (i + j) (a * b) := by
   rw [DirectSum.of_mul_of, Mul.gMul_mul]
 
+/- warning: comm_semiring.direct_sum_gcomm_semiring -> CommSemiring.directSumGCommSemiring is a dubious translation:
+lean 3 declaration is
+  forall (ι : Type.{u1}) [_inst_1 : DecidableEq.{succ u1} ι] {R : Type.{u2}} [_inst_2 : AddCommMonoid.{u1} ι] [_inst_3 : CommSemiring.{u2} R], DirectSum.GCommSemiring.{u1, u2} ι (fun (a : ι) (b : ι) => _inst_1 a b) (fun (i : ι) => R) _inst_2 (fun (i : ι) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R _inst_3))))
+but is expected to have type
+  forall (ι : Type.{u1}) {_inst_1 : Type.{u2}} [R : AddCommMonoid.{u1} ι] [_inst_2 : CommSemiring.{u2} _inst_1], DirectSum.GCommSemiring.{u1, u2} ι (fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6607 : ι) => _inst_1) R (fun (i : ι) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6607 : ι) => _inst_1) i) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6607 : ι) => _inst_1) i) (Semiring.toNonAssocSemiring.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6607 : ι) => _inst_1) i) (CommSemiring.toSemiring.{u2} ((fun (x._@.Mathlib.Algebra.DirectSum.Ring._hyg.6607 : ι) => _inst_1) i) _inst_2))))
+Case conversion may be inaccurate. Consider using '#align comm_semiring.direct_sum_gcomm_semiring CommSemiring.directSumGCommSemiringₓ'. -/
 /-- A direct sum of copies of a `comm_semiring` inherits the commutative multiplication structure.
 -/
-instance CommSemiring.directSumGcommSemiring {R : Type _} [AddCommMonoid ι] [CommSemiring R] :
-    DirectSum.GcommSemiring fun i : ι => R :=
-  { CommMonoid.gCommMonoid ι, Semiring.directSumGsemiring ι with }
-#align comm_semiring.direct_sum_gcomm_semiring CommSemiring.directSumGcommSemiring
+instance CommSemiring.directSumGCommSemiring {R : Type _} [AddCommMonoid ι] [CommSemiring R] :
+    DirectSum.GCommSemiring fun i : ι => R :=
+  { CommMonoid.gCommMonoid ι, Semiring.directSumGSemiring ι with }
+#align comm_semiring.direct_sum_gcomm_semiring CommSemiring.directSumGCommSemiring
 
 end Uniform
 
Diff
@@ -660,8 +660,8 @@ variable (ι)
 instance NonUnitalNonAssocSemiring.directSumGnonUnitalNonAssocSemiring {R : Type _} [AddMonoid ι]
     [NonUnitalNonAssocSemiring R] : DirectSum.GnonUnitalNonAssocSemiring fun i : ι => R :=
   { Mul.gMul ι with
-    mul_zero := fun i j => mul_zero
-    zero_mul := fun i j => zero_mul
+    mul_zero := fun i j => MulZeroClass.mul_zero
+    zero_mul := fun i j => MulZeroClass.zero_mul
     mul_add := fun i j => mul_add
     add_mul := fun i j => add_mul }
 #align non_unital_non_assoc_semiring.direct_sum_gnon_unital_non_assoc_semiring NonUnitalNonAssocSemiring.directSumGnonUnitalNonAssocSemiring

Changes in mathlib4

mathlib3
mathlib4
style: replace '.-/' by '. -/' (#11938)

Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.

Diff
@@ -112,11 +112,11 @@ variable (A : ι → Type*)
 /-- A graded version of `Semiring`. -/
 class GSemiring [AddMonoid ι] [∀ i, AddCommMonoid (A i)] extends GNonUnitalNonAssocSemiring A,
   GradedMonoid.GMonoid A where
-  /-- The canonical map from ℕ to the zeroth component of a graded semiring.-/
+  /-- The canonical map from ℕ to the zeroth component of a graded semiring. -/
   natCast : ℕ → A 0
-  /-- The canonical map from ℕ to a graded semiring respects zero.-/
+  /-- The canonical map from ℕ to a graded semiring respects zero. -/
   natCast_zero : natCast 0 = 0
-  /-- The canonical map from ℕ to a graded semiring respects successors.-/
+  /-- The canonical map from ℕ to a graded semiring respects successors. -/
   natCast_succ : ∀ n : ℕ, natCast (n + 1) = natCast n + GradedMonoid.GOne.one
 #align direct_sum.gsemiring DirectSum.GSemiring
 
@@ -127,13 +127,13 @@ class GCommSemiring [AddCommMonoid ι] [∀ i, AddCommMonoid (A i)] extends GSem
 
 /-- A graded version of `Ring`. -/
 class GRing [AddMonoid ι] [∀ i, AddCommGroup (A i)] extends GSemiring A where
-  /-- The canonical map from ℤ to the zeroth component of a graded ring.-/
+  /-- The canonical map from ℤ to the zeroth component of a graded ring. -/
   intCast : ℤ → A 0
   /-- The canonical map from ℤ to a graded ring extends the canonical map from ℕ to the underlying
-  graded semiring.-/
+  graded semiring. -/
   intCast_ofNat : ∀ n : ℕ, intCast n = natCast n
   /-- On negative integers, the canonical map from ℤ to a graded ring is the negative extension of
-  the canonical map from ℕ to the underlying graded semiring.-/
+  the canonical map from ℕ to the underlying graded semiring. -/
   -- Porting note: -(n+1) -> Int.negSucc
   intCast_negSucc_ofNat : ∀ n : ℕ, intCast (Int.negSucc n) = -natCast (n + 1 : ℕ)
 #align direct_sum.gring DirectSum.GRing
chore(Field/InjSurj): Tidy (#11480)

Among other things, change the nsmul, zsmul, qsmul fields to have n/q come before x, because this matches the lemmas we want to write about them. It would be preferrable to perform the same changes to the AddMonoid/AddGroup-like typeclasses, but this is impossible with the current to_additive framework, so instead I have inserted some Function.swap at the interface between AddMonoid/AddGroup and Ring/Field.

Reduce the diff of #11203

Diff
@@ -432,7 +432,7 @@ theorem of_zero_mul (a b : A 0) : of _ 0 (a * b) = of _ 0 a * of _ 0 b :=
 
 instance GradeZero.nonUnitalNonAssocSemiring : NonUnitalNonAssocSemiring (A 0) :=
   Function.Injective.nonUnitalNonAssocSemiring (of A 0) DFinsupp.single_injective (of A 0).map_zero
-    (of A 0).map_add (of_zero_mul A) fun x n => DFinsupp.single_smul n x
+    (of A 0).map_add (of_zero_mul A) (map_nsmul _)
 #align direct_sum.grade_zero.non_unital_non_assoc_semiring DirectSum.GradeZero.nonUnitalNonAssocSemiring
 
 instance GradeZero.smulWithZero (i : ι) : SMulWithZero (A 0) (A i) := by
@@ -473,8 +473,8 @@ theorem of_zero_ofNat (n : ℕ) [n.AtLeastTwo] : of A 0 (no_index (OfNat.ofNat n
 /-- The `Semiring` structure derived from `GSemiring A`. -/
 instance GradeZero.semiring : Semiring (A 0) :=
   Function.Injective.semiring (of A 0) DFinsupp.single_injective (of A 0).map_zero (of_zero_one A)
-    (of A 0).map_add (of_zero_mul A) (of A 0).map_nsmul (fun _ _ => of_zero_pow _ _ _)
-    (of_natCast A)
+    (of A 0).map_add (of_zero_mul A) (fun _ _ ↦ (of A 0).map_nsmul _ _)
+    (fun _ _ => of_zero_pow _ _ _) (of_natCast A)
 #align direct_sum.grade_zero.semiring DirectSum.GradeZero.semiring
 
 /-- `of A 0` is a `RingHom`, using the `DirectSum.GradeZero.semiring` structure. -/
@@ -501,7 +501,7 @@ variable [∀ i, AddCommMonoid (A i)] [AddCommMonoid ι] [GCommSemiring A]
 /-- The `CommSemiring` structure derived from `GCommSemiring A`. -/
 instance GradeZero.commSemiring : CommSemiring (A 0) :=
   Function.Injective.commSemiring (of A 0) DFinsupp.single_injective (of A 0).map_zero
-    (of_zero_one A) (of A 0).map_add (of_zero_mul A) (fun x n => DFinsupp.single_smul n x)
+    (of_zero_one A) (of A 0).map_add (of_zero_mul A) (fun _ _ ↦ map_nsmul _ _ _)
     (fun _ _ => of_zero_pow _ _ _) (of_natCast A)
 #align direct_sum.grade_zero.comm_semiring DirectSum.GradeZero.commSemiring
 
@@ -514,13 +514,8 @@ variable [∀ i, AddCommGroup (A i)] [AddZeroClass ι] [GNonUnitalNonAssocSemiri
 /-- The `NonUnitalNonAssocRing` derived from `GNonUnitalNonAssocSemiring A`. -/
 instance GradeZero.nonUnitalNonAssocRing : NonUnitalNonAssocRing (A 0) :=
   Function.Injective.nonUnitalNonAssocRing (of A 0) DFinsupp.single_injective (of A 0).map_zero
-    (of A 0).map_add (of_zero_mul A) (of A 0).map_neg (of A 0).map_sub
-    (fun x n =>
-      letI : ∀ i, DistribMulAction ℕ (A i) := fun _ => inferInstance
-      DFinsupp.single_smul n x)
-    fun x n =>
-    letI : ∀ i, DistribMulAction ℤ (A i) := fun _ => inferInstance
-    DFinsupp.single_smul n x
+    (of A 0).map_add (of_zero_mul A) (of A 0).map_neg (of A 0).map_sub (fun _ _ ↦ map_nsmul _ _ _)
+    (fun _ _ ↦ map_zsmul _ _ _)
 #align direct_sum.grade_zero.non_unital_non_assoc_ring DirectSum.GradeZero.nonUnitalNonAssocRing
 
 end Ring
@@ -540,14 +535,8 @@ theorem of_intCast (n : ℤ) : of A 0 n = n := by
 /-- The `Ring` derived from `GSemiring A`. -/
 instance GradeZero.ring : Ring (A 0) :=
   Function.Injective.ring (of A 0) DFinsupp.single_injective (of A 0).map_zero (of_zero_one A)
-    (of A 0).map_add (of_zero_mul A) (of A 0).map_neg (of A 0).map_sub
-    (fun x n =>
-      letI : ∀ i, DistribMulAction ℕ (A i) := fun _ => inferInstance
-      DFinsupp.single_smul n x)
-    (fun x n =>
-      letI : ∀ i, DistribMulAction ℤ (A i) := fun _ => inferInstance
-      DFinsupp.single_smul n x)
-    (fun _ _ => of_zero_pow _ _ _) (of_natCast A) (of_intCast A)
+    (of A 0).map_add (of_zero_mul A) (of A 0).map_neg (of A 0).map_sub (fun _ _ ↦ map_nsmul _ _ _)
+    (fun _ _ ↦ map_zsmul _ _ _) (fun _ _ => of_zero_pow _ _ _) (of_natCast A) (of_intCast A)
 #align direct_sum.grade_zero.ring DirectSum.GradeZero.ring
 
 end Ring
@@ -559,14 +548,8 @@ variable [∀ i, AddCommGroup (A i)] [AddCommMonoid ι] [GCommRing A]
 /-- The `CommRing` derived from `GCommSemiring A`. -/
 instance GradeZero.commRing : CommRing (A 0) :=
   Function.Injective.commRing (of A 0) DFinsupp.single_injective (of A 0).map_zero (of_zero_one A)
-    (of A 0).map_add (of_zero_mul A) (of A 0).map_neg (of A 0).map_sub
-    (fun x n =>
-      letI : ∀ i, DistribMulAction ℕ (A i) := fun _ => inferInstance
-      DFinsupp.single_smul n x)
-    (fun x n =>
-      letI : ∀ i, DistribMulAction ℤ (A i) := fun _ => inferInstance
-      DFinsupp.single_smul n x)
-    (fun _ _ => of_zero_pow _ _ _) (of_natCast A) (of_intCast A)
+    (of A 0).map_add (of_zero_mul A) (of A 0).map_neg (of A 0).map_sub (fun _ _ ↦ map_nsmul _ _ _)
+    (fun _ _ ↦ map_zsmul _ _ _) (fun _ _ => of_zero_pow _ _ _) (of_natCast A) (of_intCast A)
 #align direct_sum.grade_zero.comm_ring DirectSum.GradeZero.commRing
 
 end CommRing
change the order of operation in zsmulRec and nsmulRec (#11451)

We change the following field in the definition of an additive commutative monoid:

 nsmul_succ : ∀ (n : ℕ) (x : G),
-  AddMonoid.nsmul (n + 1) x = x + AddMonoid.nsmul n x
+  AddMonoid.nsmul (n + 1) x = AddMonoid.nsmul n x + x

where the latter is more natural

We adjust the definitions of ^ in monoids, groups, etc. Originally there was a warning comment about why this natural order was preferred

use x * npowRec n x and not npowRec n x * x in the definition to make sure that definitional unfolding of npowRec is blocked, to avoid deep recursion issues.

but it seems to no longer apply.

Remarks on the PR :

  • pow_succ and pow_succ' have switched their meanings.
  • Most of the time, the proofs were adjusted by priming/unpriming one lemma, or exchanging left and right; a few proofs were more complicated to adjust.
  • In particular, [Mathlib/NumberTheory/RamificationInertia.lean] used Ideal.IsPrime.mul_mem_pow which is defined in [Mathlib/RingTheory/DedekindDomain/Ideal.lean]. Changing the order of operation forced me to add the symmetric lemma Ideal.IsPrime.mem_pow_mul.
  • the docstring for Cauchy condensation test in [Mathlib/Analysis/PSeries.lean] was mathematically incorrect, I added the mention that the function is antitone.
Diff
@@ -284,7 +284,7 @@ theorem ofPow {i} (a : A i) (n : ℕ) :
     of _ i a ^ n = of _ (n • i) (GradedMonoid.GMonoid.gnpow _ a) := by
   induction' n with n n_ih
   · exact of_eq_of_gradedMonoid_eq (pow_zero <| GradedMonoid.mk _ a).symm
-  · rw [pow_succ, n_ih, of_mul_of a]
+  · rw [pow_succ, n_ih, of_mul_of]
     exact of_eq_of_gradedMonoid_eq (pow_succ (GradedMonoid.mk _ a) n).symm
 #align direct_sum.of_pow DirectSum.ofPow
 
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
@@ -576,7 +576,6 @@ end GradeZero
 section ToSemiring
 
 variable {R : Type*} [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A] [Semiring R]
-
 variable {A}
 
 /-- If two ring homomorphisms from `⨁ i, A i` are equal on each `of A i y`,
doc: fix typos in tags header (#11088)

Fix 1 typo, 5 lowercase, 4 header depths

Diff
@@ -69,7 +69,7 @@ If `CompleteLattice.independent (Set.range A)`, these provide a gradation of `
 mapping `⨁ i, A i →+ ⨆ i, A i` can be obtained as
 `DirectSum.toMonoid (fun i ↦ AddSubmonoid.inclusion <| le_iSup A i)`.
 
-## tags
+## Tags
 
 graded ring, filtered ring, direct sum, add_submonoid
 -/
chore: classify slow / slower porting notes (#11084)

Classifies by adding issue number #11083 to porting notes claiming anything semantically equivalent to:

  • "very slow; improve performance?"
  • "quite slow; improve performance?"
  • "`tactic" was slow"
  • "removed attribute because it caused extremely slow tactic"
  • "proof was rewritten, because it was too slow"
  • "doing this make things very slow"
  • "slower implementation"
Diff
@@ -234,7 +234,7 @@ private nonrec theorem one_mul (x : ⨁ i, A i) : 1 * x = x := by
   exact of_eq_of_gradedMonoid_eq (one_mul <| GradedMonoid.mk i xi)
 #noalign direct_sum.one_mul
 
--- Porting note: `suffices` is very slow here.
+-- Porting note (#11083): `suffices` is very slow here.
 private nonrec theorem mul_one (x : ⨁ i, A i) : x * 1 = x := by
   suffices (mulHom A).flip One.one = AddMonoidHom.id (⨁ i, A i) from DFunLike.congr_fun this x
   apply addHom_ext; intro i xi
chore: add lemmas for nat literals corresponding to lemmas for nat casts (#8006)

I loogled for every occurrence of "cast", Nat and "natCast" and where the casted nat was n, and made sure there were corresponding @[simp] lemmas for 0, 1, and OfNat.ofNat n. This is necessary in general for simp confluence. Example:

import Mathlib

variable {α : Type*} [LinearOrderedRing α] (m n : ℕ) [m.AtLeastTwo] [n.AtLeastTwo]

example : ((OfNat.ofNat m : ℕ) : α) ≤ ((OfNat.ofNat n : ℕ) : α) ↔ (OfNat.ofNat m : ℕ) ≤ (OfNat.ofNat n : ℕ) := by
  simp only [Nat.cast_le] -- this `@[simp]` lemma can apply

example : ((OfNat.ofNat m : ℕ) : α) ≤ ((OfNat.ofNat n : ℕ) : α) ↔ (OfNat.ofNat m : α) ≤ (OfNat.ofNat n : α) := by
  simp only [Nat.cast_ofNat] -- and so can this one

example : (OfNat.ofNat m : α) ≤ (OfNat.ofNat n : α) ↔ (OfNat.ofNat m : ℕ) ≤ (OfNat.ofNat n : ℕ) := by
  simp -- fails! `simp` doesn't have a lemma to bridge their results. confluence issue.

As far as I know, the only file this PR leaves with ofNat gaps is PartENat.lean. #8002 is addressing that file in parallel.

Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -457,11 +457,19 @@ theorem of_zero_pow (a : A 0) : ∀ n : ℕ, of A 0 (a ^ n) = of A 0 a ^ n
 instance : NatCast (A 0) :=
   ⟨GSemiring.natCast⟩
 
+
+-- TODO: These could be replaced by the general lemmas for `AddMonoidHomClass` (`map_natCast'` and
+-- `map_ofNat'`) if those were marked `@[simp low]`.
 @[simp]
 theorem of_natCast (n : ℕ) : of A 0 n = n :=
   rfl
 #align direct_sum.of_nat_cast DirectSum.of_natCast
 
+-- See note [no_index around OfNat.ofNat]
+@[simp]
+theorem of_zero_ofNat (n : ℕ) [n.AtLeastTwo] : of A 0 (no_index (OfNat.ofNat n)) = OfNat.ofNat n :=
+  of_natCast A n
+
 /-- The `Semiring` structure derived from `GSemiring A`. -/
 instance GradeZero.semiring : Semiring (A 0) :=
   Function.Injective.semiring (of A 0) DFinsupp.single_injective (of A 0).map_zero (of_zero_one A)
fix(Algebra/DirectSum/Ring): correct mis-ported lemma names (#10953)

Co-authored-by: timotree3 <timorcb@gmail.com>

Diff
@@ -458,15 +458,15 @@ instance : NatCast (A 0) :=
   ⟨GSemiring.natCast⟩
 
 @[simp]
-theorem ofNatCast (n : ℕ) : of A 0 n = n :=
+theorem of_natCast (n : ℕ) : of A 0 n = n :=
   rfl
-#align direct_sum.of_nat_cast DirectSum.ofNatCast
+#align direct_sum.of_nat_cast DirectSum.of_natCast
 
 /-- The `Semiring` structure derived from `GSemiring A`. -/
 instance GradeZero.semiring : Semiring (A 0) :=
   Function.Injective.semiring (of A 0) DFinsupp.single_injective (of A 0).map_zero (of_zero_one A)
     (of A 0).map_add (of_zero_mul A) (of A 0).map_nsmul (fun _ _ => of_zero_pow _ _ _)
-    (ofNatCast A)
+    (of_natCast A)
 #align direct_sum.grade_zero.semiring DirectSum.GradeZero.semiring
 
 /-- `of A 0` is a `RingHom`, using the `DirectSum.GradeZero.semiring` structure. -/
@@ -494,7 +494,7 @@ variable [∀ i, AddCommMonoid (A i)] [AddCommMonoid ι] [GCommSemiring A]
 instance GradeZero.commSemiring : CommSemiring (A 0) :=
   Function.Injective.commSemiring (of A 0) DFinsupp.single_injective (of A 0).map_zero
     (of_zero_one A) (of A 0).map_add (of_zero_mul A) (fun x n => DFinsupp.single_smul n x)
-    (fun _ _ => of_zero_pow _ _ _) (ofNatCast A)
+    (fun _ _ => of_zero_pow _ _ _) (of_natCast A)
 #align direct_sum.grade_zero.comm_semiring DirectSum.GradeZero.commSemiring
 
 end CommSemiring
@@ -525,9 +525,9 @@ instance : IntCast (A 0) :=
   ⟨GRing.intCast⟩
 
 @[simp]
-theorem ofIntCast (n : ℤ) : of A 0 n = n := by
+theorem of_intCast (n : ℤ) : of A 0 n = n := by
   rfl
-#align direct_sum.of_int_cast DirectSum.ofIntCast
+#align direct_sum.of_int_cast DirectSum.of_intCast
 
 /-- The `Ring` derived from `GSemiring A`. -/
 instance GradeZero.ring : Ring (A 0) :=
@@ -539,7 +539,7 @@ instance GradeZero.ring : Ring (A 0) :=
     (fun x n =>
       letI : ∀ i, DistribMulAction ℤ (A i) := fun _ => inferInstance
       DFinsupp.single_smul n x)
-    (fun _ _ => of_zero_pow _ _ _) (ofNatCast A) (ofIntCast A)
+    (fun _ _ => of_zero_pow _ _ _) (of_natCast A) (of_intCast A)
 #align direct_sum.grade_zero.ring DirectSum.GradeZero.ring
 
 end Ring
@@ -558,7 +558,7 @@ instance GradeZero.commRing : CommRing (A 0) :=
     (fun x n =>
       letI : ∀ i, DistribMulAction ℤ (A i) := fun _ => inferInstance
       DFinsupp.single_smul n x)
-    (fun _ _ => of_zero_pow _ _ _) (ofNatCast A) (ofIntCast A)
+    (fun _ _ => of_zero_pow _ _ _) (of_natCast A) (of_intCast A)
 #align direct_sum.grade_zero.comm_ring DirectSum.GradeZero.commRing
 
 end CommRing
chore: classify simp can do this porting notes (#10619)

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

Diff
@@ -614,7 +614,7 @@ def toSemiring (f : ∀ i, A i →+ R) (hone : f _ GradedMonoid.GOne.one = 1)
       exact hmul _ _ }
 #align direct_sum.to_semiring DirectSum.toSemiring
 
--- Porting note: removed @[simp] as simp can prove this
+-- Porting note (#10618): removed @[simp] as simp can prove this
 theorem toSemiring_of (f : ∀ i, A i →+ R) (hone hmul) (i : ι) (x : A i) :
     toSemiring f hone hmul (of _ i x) = f _ x :=
   toAddMonoid_of f i x
style(Algebra/DirectSum/Ring): add newline (#10737)
Diff
@@ -99,7 +99,8 @@ class GNonUnitalNonAssocSemiring [Add ι] [∀ i, AddCommMonoid (A i)] extends
   addition. -/
   mul_add : ∀ {i j} (a : A i) (b c : A j), mul a (b + c) = mul a b + mul a c
   /-- Multiplication from the left between graded components distributes with respect to
-  addition. -/  add_mul : ∀ {i j} (a b : A i) (c : A j), mul (a + b) c = mul a c + mul b c
+  addition. -/
+  add_mul : ∀ {i j} (a b : A i) (c : A j), mul (a + b) c = mul a c + mul b c
 #align direct_sum.gnon_unital_non_assoc_semiring DirectSum.GNonUnitalNonAssocSemiring
 
 end Defs
chore(*): rename FunLike to DFunLike (#9785)

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

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

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

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

Diff
@@ -226,7 +226,7 @@ variable [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A]
 open AddMonoidHom (flipHom coe_comp compHom flip_apply)
 
 private nonrec theorem one_mul (x : ⨁ i, A i) : 1 * x = x := by
-  suffices mulHom A One.one = AddMonoidHom.id (⨁ i, A i) from FunLike.congr_fun this x
+  suffices mulHom A One.one = AddMonoidHom.id (⨁ i, A i) from DFunLike.congr_fun this x
   apply addHom_ext; intro i xi
   simp only [One.one]
   rw [mulHom_of_of]
@@ -235,7 +235,7 @@ private nonrec theorem one_mul (x : ⨁ i, A i) : 1 * x = x := by
 
 -- Porting note: `suffices` is very slow here.
 private nonrec theorem mul_one (x : ⨁ i, A i) : x * 1 = x := by
-  suffices (mulHom A).flip One.one = AddMonoidHom.id (⨁ i, A i) from FunLike.congr_fun this x
+  suffices (mulHom A).flip One.one = AddMonoidHom.id (⨁ i, A i) from DFunLike.congr_fun this x
   apply addHom_ext; intro i xi
   simp only [One.one]
   rw [flip_apply, mulHom_of_of]
@@ -248,7 +248,7 @@ private theorem mul_assoc (a b c : ⨁ i, A i) : a * b * c = a * (b * c) := by
   -- (`fun a b c => a * b * c` as a bundled hom) = (`fun a b c => a * (b * c)` as a bundled hom)
   suffices (mulHom A).compHom.comp (mulHom A) =
       (AddMonoidHom.compHom flipHom <| (mulHom A).flip.compHom.comp (mulHom A)).flip by
-      have sol := FunLike.congr_fun (FunLike.congr_fun (FunLike.congr_fun this a) b) c
+      have sol := DFunLike.congr_fun (DFunLike.congr_fun (DFunLike.congr_fun this a) b) c
       have aux : ∀ a b, (mulHom A) a b = a * b := fun _ _ ↦ rfl
       simp only [coe_comp, Function.comp_apply, AddMonoidHom.compHom_apply_apply, aux, flip_apply,
         AddMonoidHom.flipHom_apply] at sol
chore(*): replace $ with <| (#9319)

See Zulip thread for the discussion.

Diff
@@ -67,7 +67,7 @@ instances for:
 
 If `CompleteLattice.independent (Set.range A)`, these provide a gradation of `⨆ i, A i`, and the
 mapping `⨁ i, A i →+ ⨆ i, A i` can be obtained as
-`DirectSum.toMonoid (fun i ↦ AddSubmonoid.inclusion $ le_iSup A i)`.
+`DirectSum.toMonoid (fun i ↦ AddSubmonoid.inclusion <| le_iSup A i)`.
 
 ## tags
 
chore: remove nonterminal simp (#7580)

Removes nonterminal simps on lines looking like simp [...]

Diff
@@ -643,7 +643,7 @@ def liftRingHom :
       rfl,
       by
       intros i j ai aj
-      simp [AddMonoidHom.comp_apply]
+      simp only [AddMonoidHom.comp_apply, AddMonoidHom.coe_coe]
       rw [← F.map_mul (of A i ai), of_mul_of ai]⟩
   left_inv f := by
     ext xi xv
Revert "chore: revert #7703 (#7710)"

This reverts commit f3695eb2.

Diff
@@ -312,8 +312,10 @@ theorem mul_eq_dfinsupp_sum [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a'
   -- Porting note: I have no idea how the proof from ml3 worked it used to be
   -- simpa only [mul_hom, to_add_monoid, dfinsupp.lift_add_hom_apply, dfinsupp.sum_add_hom_apply,
   -- add_monoid_hom.dfinsupp_sum_apply, flip_apply, add_monoid_hom.dfinsupp_sum_add_hom_apply],
-  rw [mulHom,toAddMonoid,DFinsupp.liftAddHom_apply,DFinsupp.sumAddHom_apply,
-    AddMonoidHom.dfinsupp_sum_apply]
+  rw [mulHom, toAddMonoid, DFinsupp.liftAddHom_apply]
+  -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+  erw [DFinsupp.sumAddHom_apply]
+  rw [AddMonoidHom.dfinsupp_sum_apply]
   apply congrArg _
   funext x
   simp_rw [flip_apply]
chore: revert #7703 (#7710)

This reverts commit 26eb2b0a.

Diff
@@ -312,10 +312,8 @@ theorem mul_eq_dfinsupp_sum [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a'
   -- Porting note: I have no idea how the proof from ml3 worked it used to be
   -- simpa only [mul_hom, to_add_monoid, dfinsupp.lift_add_hom_apply, dfinsupp.sum_add_hom_apply,
   -- add_monoid_hom.dfinsupp_sum_apply, flip_apply, add_monoid_hom.dfinsupp_sum_add_hom_apply],
-  rw [mulHom, toAddMonoid, DFinsupp.liftAddHom_apply]
-  -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
-  erw [DFinsupp.sumAddHom_apply]
-  rw [AddMonoidHom.dfinsupp_sum_apply]
+  rw [mulHom,toAddMonoid,DFinsupp.liftAddHom_apply,DFinsupp.sumAddHom_apply,
+    AddMonoidHom.dfinsupp_sum_apply]
   apply congrArg _
   funext x
   simp_rw [flip_apply]
chore: bump toolchain to v4.2.0-rc2 (#7703)

This includes all the changes from #7606.

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

Diff
@@ -312,8 +312,10 @@ theorem mul_eq_dfinsupp_sum [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a'
   -- Porting note: I have no idea how the proof from ml3 worked it used to be
   -- simpa only [mul_hom, to_add_monoid, dfinsupp.lift_add_hom_apply, dfinsupp.sum_add_hom_apply,
   -- add_monoid_hom.dfinsupp_sum_apply, flip_apply, add_monoid_hom.dfinsupp_sum_add_hom_apply],
-  rw [mulHom,toAddMonoid,DFinsupp.liftAddHom_apply,DFinsupp.sumAddHom_apply,
-    AddMonoidHom.dfinsupp_sum_apply]
+  rw [mulHom, toAddMonoid, DFinsupp.liftAddHom_apply]
+  -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+  erw [DFinsupp.sumAddHom_apply]
+  rw [AddMonoidHom.dfinsupp_sum_apply]
   apply congrArg _
   funext x
   simp_rw [flip_apply]
chore(Algebra/DirectSum/Ring): add missing rfl lemma (#7575)

This isn't a simp lemma for the same reason that Algebra.TensorProduct.one_def isn't.

Also simplifies the term in the instance.

Diff
@@ -158,7 +158,9 @@ section One
 
 variable [Zero ι] [GradedMonoid.GOne A] [∀ i, AddCommMonoid (A i)]
 
-instance : One (⨁ i, A i) where one := DirectSum.of (fun i => A i) 0 GradedMonoid.GOne.one
+instance : One (⨁ i, A i) where one := DirectSum.of A 0 GradedMonoid.GOne.one
+
+theorem one_def : 1 = DirectSum.of A 0 GradedMonoid.GOne.one := rfl
 
 end One
 
perf: remove overspecified fields (#6965)

This removes redundant field values of the form add := add for smaller terms and less unfolding during unification.

A list of all files containing a structure instance of the form { a1, ... with x1 := val, ... } where some xi is a field of some aj was generated by modifying the structure instance elaboration algorithm to print such overlaps to stdout in a custom toolchain.

Using that toolchain, I went through each file on the list and attempted to remove algebraic fields that overlapped and were redundant, eg add := add and not toFun (though some other ones did creep in). If things broke (which was the case in a couple of cases), I did not push further and reverted.

It is possible that pushing harder and trying to remove all redundant overlaps will yield further improvements.

Diff
@@ -345,10 +345,6 @@ private theorem mul_comm (a b : ⨁ i, A i) : a * b = b * a := by
 /-- The `CommSemiring` structure derived from `GCommSemiring A`. -/
 instance commSemiring : CommSemiring (⨁ i, A i) :=
   { DirectSum.semiring A with
-    one := 1
-    mul := (· * ·)
-    zero := 0
-    add := (· + ·)
     mul_comm := mul_comm A }
 #align direct_sum.comm_semiring DirectSum.commSemiring
 
@@ -361,11 +357,7 @@ variable [∀ i, AddCommGroup (A i)] [Add ι] [GNonUnitalNonAssocSemiring A]
 /-- The `Ring` derived from `GSemiring A`. -/
 instance nonAssocRing : NonUnitalNonAssocRing (⨁ i, A i) :=
   { (inferInstance : NonUnitalNonAssocSemiring (⨁ i, A i)),
-    (inferInstance : AddCommGroup (⨁ i, A i)) with
-    mul := (· * ·)
-    zero := 0
-    add := (· + ·)
-    neg := Neg.neg }
+    (inferInstance : AddCommGroup (⨁ i, A i)) with }
 #align direct_sum.non_assoc_ring DirectSum.nonAssocRing
 
 end NonUnitalNonAssocRing
@@ -394,12 +386,7 @@ variable [∀ i, AddCommGroup (A i)] [AddCommMonoid ι] [GCommRing A]
 /-- The `CommRing` derived from `GCommSemiring A`. -/
 instance commRing : CommRing (⨁ i, A i) :=
   { DirectSum.ring A,
-    DirectSum.commSemiring A with
-    one := 1
-    mul := (· * ·)
-    zero := 0
-    add := (· + ·)
-    neg := Neg.neg }
+    DirectSum.commSemiring A with }
 #align direct_sum.comm_ring DirectSum.commRing
 
 end CommRing
chore: banish Type _ and Sort _ (#6499)

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

This has nice performance benefits.

Diff
@@ -75,7 +75,7 @@ graded ring, filtered ring, direct sum, add_submonoid
 -/
 
 
-variable {ι : Type _} [DecidableEq ι]
+variable {ι : Type*} [DecidableEq ι]
 
 namespace DirectSum
 
@@ -86,7 +86,7 @@ open DirectSum
 
 section Defs
 
-variable (A : ι → Type _)
+variable (A : ι → Type*)
 
 /-- A graded version of `NonUnitalNonAssocSemiring`. -/
 class GNonUnitalNonAssocSemiring [Add ι] [∀ i, AddCommMonoid (A i)] extends
@@ -106,7 +106,7 @@ end Defs
 
 section Defs
 
-variable (A : ι → Type _)
+variable (A : ι → Type*)
 
 /-- A graded version of `Semiring`. -/
 class GSemiring [AddMonoid ι] [∀ i, AddCommMonoid (A i)] extends GNonUnitalNonAssocSemiring A,
@@ -143,13 +143,13 @@ class GCommRing [AddCommMonoid ι] [∀ i, AddCommGroup (A i)] extends GRing A,
 
 end Defs
 
-theorem of_eq_of_gradedMonoid_eq {A : ι → Type _} [∀ i : ι, AddCommMonoid (A i)] {i j : ι} {a : A i}
+theorem of_eq_of_gradedMonoid_eq {A : ι → Type*} [∀ i : ι, AddCommMonoid (A i)] {i j : ι} {a : A i}
     {b : A j} (h : GradedMonoid.mk i a = GradedMonoid.mk j b) :
     DirectSum.of A i a = DirectSum.of A j b :=
   DFinsupp.single_eq_of_sigma_eq h
 #align direct_sum.of_eq_of_graded_monoid_eq DirectSum.of_eq_of_gradedMonoid_eq
 
-variable (A : ι → Type _)
+variable (A : ι → Type*)
 
 /-! ### Instances for `⨁ i, A i` -/
 
@@ -575,7 +575,7 @@ end GradeZero
 
 section ToSemiring
 
-variable {R : Type _} [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A] [Semiring R]
+variable {R : Type*} [∀ i, AddCommMonoid (A i)] [AddMonoid ι] [GSemiring A] [Semiring R]
 
 variable {A}
 
@@ -676,7 +676,7 @@ section Uniform
 variable (ι)
 
 /-- A direct sum of copies of a `Semiring` inherits the multiplication structure. -/
-instance NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring {R : Type _} [AddMonoid ι]
+instance NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring {R : Type*} [AddMonoid ι]
     [NonUnitalNonAssocSemiring R] : DirectSum.GNonUnitalNonAssocSemiring fun _ : ι => R :=
   { -- Porting note: removed Mul.gMul ι with and we seem ok
     mul_zero := mul_zero
@@ -686,7 +686,7 @@ instance NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring {R : Type
 #align non_unital_non_assoc_semiring.direct_sum_gnon_unital_non_assoc_semiring NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring
 
 /-- A direct sum of copies of a `Semiring` inherits the multiplication structure. -/
-instance Semiring.directSumGSemiring {R : Type _} [AddMonoid ι] [Semiring R] :
+instance Semiring.directSumGSemiring {R : Type*} [AddMonoid ι] [Semiring R] :
     DirectSum.GSemiring fun _ : ι => R :=
   { NonUnitalNonAssocSemiring.directSumGNonUnitalNonAssocSemiring ι,
     Monoid.gMonoid ι with
@@ -698,13 +698,13 @@ instance Semiring.directSumGSemiring {R : Type _} [AddMonoid ι] [Semiring R] :
 open DirectSum
 
 -- To check `Mul.gmul_mul` matches
-example {R : Type _} [AddMonoid ι] [Semiring R] (i j : ι) (a b : R) :
+example {R : Type*} [AddMonoid ι] [Semiring R] (i j : ι) (a b : R) :
     (DirectSum.of _ i a * DirectSum.of _ j b : ⨁ _, R) = DirectSum.of _ (i + j) (a * b) := by
   rw [DirectSum.of_mul_of, Mul.gMul_mul]
 
 /-- A direct sum of copies of a `CommSemiring` inherits the commutative multiplication structure.
 -/
-instance CommSemiring.directSumGCommSemiring {R : Type _} [AddCommMonoid ι] [CommSemiring R] :
+instance CommSemiring.directSumGCommSemiring {R : Type*} [AddCommMonoid ι] [CommSemiring R] :
     DirectSum.GCommSemiring fun _ : ι => R :=
   { CommMonoid.gCommMonoid ι, Semiring.directSumGSemiring ι with }
 #align comm_semiring.direct_sum_gcomm_semiring CommSemiring.directSumGCommSemiring
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

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

Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2021 Eric Wieser. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
-
-! This file was ported from Lean 3 source module algebra.direct_sum.ring
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.GradedMonoid
 import Mathlib.Algebra.DirectSum.Basic
 
+#align_import algebra.direct_sum.ring from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
+
 /-!
 # Additively-graded multiplicative structures on `⨁ i, A i`
 
chore: rename Dfinsupp to DFinsupp (#5822)

See #4354

Diff
@@ -149,7 +149,7 @@ end Defs
 theorem of_eq_of_gradedMonoid_eq {A : ι → Type _} [∀ i : ι, AddCommMonoid (A i)] {i j : ι} {a : A i}
     {b : A j} (h : GradedMonoid.mk i a = GradedMonoid.mk j b) :
     DirectSum.of A i a = DirectSum.of A j b :=
-  Dfinsupp.single_eq_of_sigma_eq h
+  DFinsupp.single_eq_of_sigma_eq h
 #align direct_sum.of_eq_of_graded_monoid_eq DirectSum.of_eq_of_gradedMonoid_eq
 
 variable (A : ι → Type _)
@@ -313,12 +313,12 @@ theorem mul_eq_dfinsupp_sum [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a'
   -- Porting note: I have no idea how the proof from ml3 worked it used to be
   -- simpa only [mul_hom, to_add_monoid, dfinsupp.lift_add_hom_apply, dfinsupp.sum_add_hom_apply,
   -- add_monoid_hom.dfinsupp_sum_apply, flip_apply, add_monoid_hom.dfinsupp_sum_add_hom_apply],
-  rw [mulHom,toAddMonoid,Dfinsupp.liftAddHom_apply,Dfinsupp.sumAddHom_apply,
+  rw [mulHom,toAddMonoid,DFinsupp.liftAddHom_apply,DFinsupp.sumAddHom_apply,
     AddMonoidHom.dfinsupp_sum_apply]
   apply congrArg _
   funext x
   simp_rw [flip_apply]
-  erw [Dfinsupp.sumAddHom_apply]
+  erw [DFinsupp.sumAddHom_apply]
   simp only [gMulHom, AddMonoidHom.dfinsupp_sum_apply, flip_apply, coe_comp, AddMonoidHom.coe_mk,
   ZeroHom.coe_mk, Function.comp_apply, AddMonoidHom.compHom_apply_apply]
 #align direct_sum.mul_eq_dfinsupp_sum DirectSum.mul_eq_dfinsupp_sum
@@ -326,9 +326,9 @@ theorem mul_eq_dfinsupp_sum [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a'
 /-- A heavily unfolded version of the definition of multiplication -/
 theorem mul_eq_sum_support_ghas_mul [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a' : ⨁ i, A i) :
     a * a' =
-      ∑ ij in Dfinsupp.support a ×ˢ Dfinsupp.support a',
+      ∑ ij in DFinsupp.support a ×ˢ DFinsupp.support a',
         DirectSum.of _ _ (GradedMonoid.GMul.mul (a ij.fst) (a' ij.snd)) :=
-  by simp only [mul_eq_dfinsupp_sum, Dfinsupp.sum, Finset.sum_product]
+  by simp only [mul_eq_dfinsupp_sum, DFinsupp.sum, Finset.sum_product]
 #align direct_sum.mul_eq_sum_support_ghas_mul DirectSum.mul_eq_sum_support_ghas_mul
 
 end Semiring
@@ -442,13 +442,13 @@ theorem of_zero_mul (a b : A 0) : of _ 0 (a * b) = of _ 0 a * of _ 0 b :=
 #align direct_sum.of_zero_mul DirectSum.of_zero_mul
 
 instance GradeZero.nonUnitalNonAssocSemiring : NonUnitalNonAssocSemiring (A 0) :=
-  Function.Injective.nonUnitalNonAssocSemiring (of A 0) Dfinsupp.single_injective (of A 0).map_zero
-    (of A 0).map_add (of_zero_mul A) fun x n => Dfinsupp.single_smul n x
+  Function.Injective.nonUnitalNonAssocSemiring (of A 0) DFinsupp.single_injective (of A 0).map_zero
+    (of A 0).map_add (of_zero_mul A) fun x n => DFinsupp.single_smul n x
 #align direct_sum.grade_zero.non_unital_non_assoc_semiring DirectSum.GradeZero.nonUnitalNonAssocSemiring
 
 instance GradeZero.smulWithZero (i : ι) : SMulWithZero (A 0) (A i) := by
   letI := SMulWithZero.compHom (⨁ i, A i) (of A 0).toZeroHom
-  exact Function.Injective.smulWithZero (of A i).toZeroHom Dfinsupp.single_injective
+  exact Function.Injective.smulWithZero (of A i).toZeroHom DFinsupp.single_injective
     (of_zero_smul A)
 #align direct_sum.grade_zero.smul_with_zero DirectSum.GradeZero.smulWithZero
 
@@ -475,7 +475,7 @@ theorem ofNatCast (n : ℕ) : of A 0 n = n :=
 
 /-- The `Semiring` structure derived from `GSemiring A`. -/
 instance GradeZero.semiring : Semiring (A 0) :=
-  Function.Injective.semiring (of A 0) Dfinsupp.single_injective (of A 0).map_zero (of_zero_one A)
+  Function.Injective.semiring (of A 0) DFinsupp.single_injective (of A 0).map_zero (of_zero_one A)
     (of A 0).map_add (of_zero_mul A) (of A 0).map_nsmul (fun _ _ => of_zero_pow _ _ _)
     (ofNatCast A)
 #align direct_sum.grade_zero.semiring DirectSum.GradeZero.semiring
@@ -492,7 +492,7 @@ in an overall `Module (A 0) (⨁ i, A i)` structure via `DirectSum.module`.
 -/
 instance GradeZero.module {i} : Module (A 0) (A i) :=
   letI := Module.compHom (⨁ i, A i) (ofZeroRingHom A)
-  Dfinsupp.single_injective.module (A 0) (of A i) fun a => of_zero_smul A a
+  DFinsupp.single_injective.module (A 0) (of A i) fun a => of_zero_smul A a
 #align direct_sum.grade_zero.module DirectSum.GradeZero.module
 
 end Semiring
@@ -503,8 +503,8 @@ variable [∀ i, AddCommMonoid (A i)] [AddCommMonoid ι] [GCommSemiring A]
 
 /-- The `CommSemiring` structure derived from `GCommSemiring A`. -/
 instance GradeZero.commSemiring : CommSemiring (A 0) :=
-  Function.Injective.commSemiring (of A 0) Dfinsupp.single_injective (of A 0).map_zero
-    (of_zero_one A) (of A 0).map_add (of_zero_mul A) (fun x n => Dfinsupp.single_smul n x)
+  Function.Injective.commSemiring (of A 0) DFinsupp.single_injective (of A 0).map_zero
+    (of_zero_one A) (of A 0).map_add (of_zero_mul A) (fun x n => DFinsupp.single_smul n x)
     (fun _ _ => of_zero_pow _ _ _) (ofNatCast A)
 #align direct_sum.grade_zero.comm_semiring DirectSum.GradeZero.commSemiring
 
@@ -516,14 +516,14 @@ variable [∀ i, AddCommGroup (A i)] [AddZeroClass ι] [GNonUnitalNonAssocSemiri
 
 /-- The `NonUnitalNonAssocRing` derived from `GNonUnitalNonAssocSemiring A`. -/
 instance GradeZero.nonUnitalNonAssocRing : NonUnitalNonAssocRing (A 0) :=
-  Function.Injective.nonUnitalNonAssocRing (of A 0) Dfinsupp.single_injective (of A 0).map_zero
+  Function.Injective.nonUnitalNonAssocRing (of A 0) DFinsupp.single_injective (of A 0).map_zero
     (of A 0).map_add (of_zero_mul A) (of A 0).map_neg (of A 0).map_sub
     (fun x n =>
       letI : ∀ i, DistribMulAction ℕ (A i) := fun _ => inferInstance
-      Dfinsupp.single_smul n x)
+      DFinsupp.single_smul n x)
     fun x n =>
     letI : ∀ i, DistribMulAction ℤ (A i) := fun _ => inferInstance
-    Dfinsupp.single_smul n x
+    DFinsupp.single_smul n x
 #align direct_sum.grade_zero.non_unital_non_assoc_ring DirectSum.GradeZero.nonUnitalNonAssocRing
 
 end Ring
@@ -542,14 +542,14 @@ theorem ofIntCast (n : ℤ) : of A 0 n = n := by
 
 /-- The `Ring` derived from `GSemiring A`. -/
 instance GradeZero.ring : Ring (A 0) :=
-  Function.Injective.ring (of A 0) Dfinsupp.single_injective (of A 0).map_zero (of_zero_one A)
+  Function.Injective.ring (of A 0) DFinsupp.single_injective (of A 0).map_zero (of_zero_one A)
     (of A 0).map_add (of_zero_mul A) (of A 0).map_neg (of A 0).map_sub
     (fun x n =>
       letI : ∀ i, DistribMulAction ℕ (A i) := fun _ => inferInstance
-      Dfinsupp.single_smul n x)
+      DFinsupp.single_smul n x)
     (fun x n =>
       letI : ∀ i, DistribMulAction ℤ (A i) := fun _ => inferInstance
-      Dfinsupp.single_smul n x)
+      DFinsupp.single_smul n x)
     (fun _ _ => of_zero_pow _ _ _) (ofNatCast A) (ofIntCast A)
 #align direct_sum.grade_zero.ring DirectSum.GradeZero.ring
 
@@ -561,14 +561,14 @@ variable [∀ i, AddCommGroup (A i)] [AddCommMonoid ι] [GCommRing A]
 
 /-- The `CommRing` derived from `GCommSemiring A`. -/
 instance GradeZero.commRing : CommRing (A 0) :=
-  Function.Injective.commRing (of A 0) Dfinsupp.single_injective (of A 0).map_zero (of_zero_one A)
+  Function.Injective.commRing (of A 0) DFinsupp.single_injective (of A 0).map_zero (of_zero_one A)
     (of A 0).map_add (of_zero_mul A) (of A 0).map_neg (of A 0).map_sub
     (fun x n =>
       letI : ∀ i, DistribMulAction ℕ (A i) := fun _ => inferInstance
-      Dfinsupp.single_smul n x)
+      DFinsupp.single_smul n x)
     (fun x n =>
       letI : ∀ i, DistribMulAction ℤ (A i) := fun _ => inferInstance
-      Dfinsupp.single_smul n x)
+      DFinsupp.single_smul n x)
     (fun _ _ => of_zero_pow _ _ _) (ofNatCast A) (ofIntCast A)
 #align direct_sum.grade_zero.comm_ring DirectSum.GradeZero.commRing
 
@@ -638,7 +638,7 @@ theorem toSemiring_coe_addMonoidHom (f : ∀ i, A i →+ R) (hone hmul) :
 #align direct_sum.to_semiring_coe_add_monoid_hom DirectSum.toSemiring_coe_addMonoidHom
 
 /-- Families of `AddMonoidHom`s preserving `DirectSum.One.one` and `DirectSum.Mul.mul`
-are isomorphic to `RingHom`s on `⨁ i, A i`. This is a stronger version of `Dfinsupp.liftAddHom`.
+are isomorphic to `RingHom`s on `⨁ i, A i`. This is a stronger version of `DFinsupp.liftAddHom`.
 -/
 @[simps]
 def liftRingHom :
chore: remove superfluous parentheses in calls to ext (#5258)

Co-authored-by: Xavier Roblot <46200072+xroblot@users.noreply.github.com> Co-authored-by: Joël Riou <joel.riou@universite-paris-saclay.fr> Co-authored-by: Riccardo Brasca <riccardo.brasca@gmail.com> Co-authored-by: Yury G. Kudryashov <urkud@urkud.name> Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com> Co-authored-by: Pol'tta / Miyahara Kō <pol_tta@outlook.jp> Co-authored-by: Jason Yuen <jason_yuen2007@hotmail.com> Co-authored-by: Mario Carneiro <di.gama@gmail.com> Co-authored-by: Jireh Loreaux <loreaujy@gmail.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: Heather Macbeth <25316162+hrmacbeth@users.noreply.github.com> Co-authored-by: Jujian Zhang <jujian.zhang1998@outlook.com> Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>

Diff
@@ -658,7 +658,7 @@ def liftRingHom :
       simp [AddMonoidHom.comp_apply]
       rw [← F.map_mul (of A i ai), of_mul_of ai]⟩
   left_inv f := by
-    ext (xi xv)
+    ext xi xv
     exact toAddMonoid_of (fun _ => f.1) xi xv
   right_inv F := by
     apply RingHom.coe_addMonoidHom_injective
chore: cleanup of some ext porting notes (#5176)

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

Diff
@@ -254,10 +254,7 @@ private theorem mul_assoc (a b c : ⨁ i, A i) : a * b * c = a * (b * c) := by
       simp only [coe_comp, Function.comp_apply, AddMonoidHom.compHom_apply_apply, aux, flip_apply,
         AddMonoidHom.flipHom_apply] at sol
       exact sol
-  -- Porting note: Next three lines used to be a single `ext` which does not work anymore
-  refine DirectSum.addHom_ext' (fun ai ↦ AddMonoidHom.ext (fun ax ↦ ?_))
-  refine DirectSum.addHom_ext' (fun bi ↦ AddMonoidHom.ext (fun bx ↦ ?_))
-  refine DirectSum.addHom_ext' (fun ci ↦ AddMonoidHom.ext (fun cx ↦ ?_))
+  ext ai ax bi bx ci cx
   dsimp only [coe_comp, Function.comp_apply, AddMonoidHom.compHom_apply_apply, flip_apply,
     AddMonoidHom.flipHom_apply]
   simp_rw [mulHom_of_of]
chore: convert lambda in docs to fun (#5045)

Found with git grep -n "λ [a-zA-Z_ ]*,"

Diff
@@ -70,7 +70,7 @@ instances for:
 
 If `CompleteLattice.independent (Set.range A)`, these provide a gradation of `⨆ i, A i`, and the
 mapping `⨁ i, A i →+ ⨆ i, A i` can be obtained as
-`DirectSum.toMonoid (λ i, AddSubmonoid.inclusion $ le_iSup A i)`.
+`DirectSum.toMonoid (fun i ↦ AddSubmonoid.inclusion $ le_iSup A i)`.
 
 ## tags
 
chore: fix grammar 1/3 (#5001)

All of these are doc fixes

Diff
@@ -490,7 +490,7 @@ def ofZeroRingHom : A 0 →+* ⨁ i, A i :=
     map_mul' := of_zero_mul A }
 #align direct_sum.of_zero_ring_hom DirectSum.ofZeroRingHom
 
-/-- Each grade `A i` derives a `A 0`-module structure from `GSemiring A`. Note that this results
+/-- Each grade `A i` derives an `A 0`-module structure from `GSemiring A`. Note that this results
 in an overall `Module (A 0) (⨁ i, A i)` structure via `DirectSum.module`.
 -/
 instance GradeZero.module {i} : Module (A 0) (A i) :=
chore: fix many typos (#4983)

These are all doc fixes

Diff
@@ -66,7 +66,7 @@ instances for:
 * `A : ι → Subgroup S`:
   `DirectSum.GSemiring.ofAddSubgroups`, `DirectSum.GCommSemiring.ofAddSubgroups`.
 * `A : ι → Submodule S`:
-  `DirectSum.GSemiring.ofSubmodules`, `DirectSum.GcommSemiring.ofSubmodules`.
+  `DirectSum.GSemiring.ofSubmodules`, `DirectSum.GCommSemiring.ofSubmodules`.
 
 If `CompleteLattice.independent (Set.range A)`, these provide a gradation of `⨆ i, A i`, and the
 mapping `⨁ i, A i →+ ⨆ i, A i` can be obtained as
chore: fix many typos (#4967)

These are all doc fixes

Diff
@@ -19,7 +19,7 @@ over `⨁ i, A i` such that `(*) : A i → A j → A (i + j)`; that is to say, `
 additively-graded ring. The typeclasses are:
 
 * `DirectSum.GNonUnitalNonAssocSemiring A`
-* `DirectSsum.GSemiring A`
+* `DirectSum.GSemiring A`
 * `DirectSum.GRing A`
 * `DirectSum.GCommSemiring A`
 * `DirectSum.GCommRing A`
@@ -62,7 +62,7 @@ Additionally, this module provides helper functions to construct `GSemiring` and
 instances for:
 
 * `A : ι → Submonoid S`:
-  `DirectSum.GSemiring.ofAddAubmonoids`, `DirectSum.GCommSemiring.ofAddSubmonoids`.
+  `DirectSum.GSemiring.ofAddSubmonoids`, `DirectSum.GCommSemiring.ofAddSubmonoids`.
 * `A : ι → Subgroup S`:
   `DirectSum.GSemiring.ofAddSubgroups`, `DirectSum.GCommSemiring.ofAddSubgroups`.
 * `A : ι → Submodule S`:
style: allow _ for an argument in notation3 & replace _foo with _ in notation3 (#4652)
Diff
@@ -705,7 +705,7 @@ open DirectSum
 
 -- To check `Mul.gmul_mul` matches
 example {R : Type _} [AddMonoid ι] [Semiring R] (i j : ι) (a b : R) :
-    (DirectSum.of _ i a * DirectSum.of _ j b : ⨁ _i, R) = DirectSum.of _ (i + j) (a * b) := by
+    (DirectSum.of _ i a * DirectSum.of _ j b : ⨁ _, R) = DirectSum.of _ (i + j) (a * b) := by
   rw [DirectSum.of_mul_of, Mul.gMul_mul]
 
 /-- A direct sum of copies of a `CommSemiring` inherits the commutative multiplication structure.
refactor: use the typeclass SProd to implement overloaded notation · ×ˢ · (#4200)

Currently, the following notations are changed from · ×ˢ · because Lean 4 can't deal with ambiguous notations. | Definition | Notation | | :

Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: Chris Hughes <chrishughes24@gmail.com>

Diff
@@ -329,7 +329,7 @@ theorem mul_eq_dfinsupp_sum [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a'
 /-- A heavily unfolded version of the definition of multiplication -/
 theorem mul_eq_sum_support_ghas_mul [∀ (i : ι) (x : A i), Decidable (x ≠ 0)] (a a' : ⨁ i, A i) :
     a * a' =
-      ∑ ij in Dfinsupp.support a ×ᶠ Dfinsupp.support a',
+      ∑ ij in Dfinsupp.support a ×ˢ Dfinsupp.support a',
         DirectSum.of _ _ (GradedMonoid.GMul.mul (a ij.fst) (a' ij.snd)) :=
   by simp only [mul_eq_dfinsupp_sum, Dfinsupp.sum, Finset.sum_product]
 #align direct_sum.mul_eq_sum_support_ghas_mul DirectSum.mul_eq_sum_support_ghas_mul
@@ -716,4 +716,3 @@ instance CommSemiring.directSumGCommSemiring {R : Type _} [AddCommMonoid ι] [Co
 #align comm_semiring.direct_sum_gcomm_semiring CommSemiring.directSumGCommSemiring
 
 end Uniform
-
chore: fix upper/lowercase in comments (#4360)
  • Run a non-interactive version of fix-comments.py on all files.
  • Go through the diff and manually add/discard/edit chunks.
Diff
@@ -70,7 +70,7 @@ instances for:
 
 If `CompleteLattice.independent (Set.range A)`, these provide a gradation of `⨆ i, A i`, and the
 mapping `⨁ i, A i →+ ⨆ i, A i` can be obtained as
-`DirectSum.toMonoid (λ i, AddSubmonoid.inclusion $ le_supr A i)`.
+`DirectSum.toMonoid (λ i, AddSubmonoid.inclusion $ le_iSup A i)`.
 
 ## tags
 
@@ -171,7 +171,7 @@ variable [Add ι] [∀ i, AddCommMonoid (A i)] [GNonUnitalNonAssocSemiring A]
 
 open AddMonoidHom (flip_apply coe_comp compHom)
 
-/-- The piecewise multiplication from the `has_mul` instance, as a bundled homomorphism. -/
+/-- The piecewise multiplication from the `Mul` instance, as a bundled homomorphism. -/
 @[simps]
 def gMulHom {i j} : A i →+ A j →+ A (i + j) where
   toFun a :=
feat: port Algebra.DirectSum.Ring (#1968)

Co-authored-by: int-y1 <jason_yuen2007@hotmail.com> Co-authored-by: Lukas Miaskiwskyi <lukas.mias@gmail.com> Co-authored-by: Oliver Nash <github@olivernash.org> Co-authored-by: Matthew Ballard <matt@mrb.email>

Dependencies 8 + 286

287 files ported (97.3%)
119710 lines ported (97.5%)
Show graph

The unported dependencies are