algebra.hom.group_instancesMathlib.Algebra.Group.Hom.Instances

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)

(last sync)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(first ported)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -97,13 +97,13 @@ instance [AddCommGroup M] : Ring (AddMonoid.End M) :=
     intCast_ofNat := natCast_zsmul _
     intCast_negSucc := negSucc_zsmul _ }
 
-#print AddMonoid.End.int_cast_apply /-
+#print AddMonoid.End.intCast_apply /-
 /-- See also `add_monoid.End.int_cast_def`. -/
 @[simp]
-theorem AddMonoid.End.int_cast_apply [AddCommGroup M] (z : ℤ) (m : M) :
+theorem AddMonoid.End.intCast_apply [AddCommGroup M] (z : ℤ) (m : M) :
     (↑z : AddMonoid.End M) m = z • m :=
   rfl
-#align add_monoid.End.int_cast_apply AddMonoid.End.int_cast_apply
+#align add_monoid.End.int_cast_apply AddMonoid.End.intCast_apply
 -/
 
 /-!
Diff
@@ -45,7 +45,7 @@ instance [MulOneClass M] [CommMonoid N] : CommMonoid (M →* N)
       map_one' := by simp
       map_mul' := fun x y => by simp [mul_pow] }
   npow_zero f := by ext x; simp
-  npow_succ n f := by ext x; simp [pow_succ]
+  npow_succ n f := by ext x; simp [pow_succ']
 
 /-- If `G` is a commutative group, then `M →* G` is a commutative group too. -/
 @[to_additive
@@ -61,7 +61,7 @@ instance {M G} [MulOneClass M] [CommGroup G] : CommGroup (M →* G) :=
         map_one' := by simp
         map_mul' := fun x y => by simp [mul_zpow] }
     zpow_zero' := fun f => by ext x; simp
-    zpow_succ' := fun n f => by ext x; simp [zpow_coe_nat, pow_succ]
+    zpow_succ' := fun n f => by ext x; simp [zpow_natCast, pow_succ']
     zpow_neg' := fun n f => by ext x; simp }
 
 instance [AddCommMonoid M] : AddCommMonoid (AddMonoid.End M) :=
@@ -94,7 +94,7 @@ instance [AddCommGroup M] : Ring (AddMonoid.End M) :=
   { AddMonoid.End.semiring,
     AddMonoidHom.addCommGroup with
     intCast := fun z => z • 1
-    intCast_ofNat := coe_nat_zsmul _
+    intCast_ofNat := natCast_zsmul _
     intCast_negSucc := negSucc_zsmul _ }
 
 #print AddMonoid.End.int_cast_apply /-
Diff
@@ -61,7 +61,7 @@ instance {M G} [MulOneClass M] [CommGroup G] : CommGroup (M →* G) :=
         map_one' := by simp
         map_mul' := fun x y => by simp [mul_zpow] }
     zpow_zero' := fun f => by ext x; simp
-    zpow_succ' := fun n f => by ext x; simp [zpow_ofNat, pow_succ]
+    zpow_succ' := fun n f => by ext x; simp [zpow_coe_nat, pow_succ]
     zpow_neg' := fun n f => by ext x; simp }
 
 instance [AddCommMonoid M] : AddCommMonoid (AddMonoid.End M) :=
@@ -94,7 +94,7 @@ instance [AddCommGroup M] : Ring (AddMonoid.End M) :=
   { AddMonoid.End.semiring,
     AddMonoidHom.addCommGroup with
     intCast := fun z => z • 1
-    intCast_ofNat := ofNat_zsmul _
+    intCast_ofNat := coe_nat_zsmul _
     intCast_negSucc := negSucc_zsmul _ }
 
 #print AddMonoid.End.int_cast_apply /-
Diff
@@ -4,8 +4,8 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot, Kevin Buzzard, Scott Morrison, Johan Commelin, Chris Hughes,
   Johannes Hölzl, Yury Kudryashov
 -/
-import Mathbin.Algebra.GroupPower.Basic
-import Mathbin.Algebra.Ring.Basic
+import Algebra.GroupPower.Basic
+import Algebra.Ring.Basic
 
 #align_import algebra.hom.group_instances from "leanprover-community/mathlib"@"c3291da49cfa65f0d43b094750541c0731edc932"
 
Diff
@@ -54,8 +54,8 @@ instance {M G} [MulOneClass M] [CommGroup G] : CommGroup (M →* G) :=
   { MonoidHom.commMonoid with
     inv := Inv.inv
     div := Div.div
-    div_eq_mul_inv := by intros; ext; apply div_eq_mul_inv
-    mul_left_inv := by intros <;> ext <;> apply mul_left_inv
+    div_eq_hMul_inv := by intros; ext; apply div_eq_mul_inv
+    hMul_left_inv := by intros <;> ext <;> apply mul_left_inv
     zpow := fun n f =>
       { toFun := fun x => f x ^ n
         map_one' := by simp
@@ -134,7 +134,7 @@ def flip {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M 
   toFun y :=
     ⟨fun x => f x y, by rw [f.map_one, one_apply], fun x₁ x₂ => by rw [f.map_mul, mul_apply]⟩
   map_one' := ext fun x => (f x).map_one
-  map_mul' y₁ y₂ := ext fun x => (f x).map_mul y₁ y₂
+  map_mul' y₁ y₂ := ext fun x => (f x).map_hMul y₁ y₂
 #align monoid_hom.flip MonoidHom.flip
 #align add_monoid_hom.flip AddMonoidHom.flip
 -/
@@ -161,7 +161,7 @@ theorem map_one₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 @[to_additive]
 theorem map_mul₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
     (m₁ m₂ : M) (n : N) : f (m₁ * m₂) n = f m₁ n * f m₂ n :=
-  (flip f n).map_mul _ _
+  (flip f n).map_hMul _ _
 #align monoid_hom.map_mul₂ MonoidHom.map_mul₂
 #align add_monoid_hom.map_mul₂ AddMonoidHom.map_mul₂
 -/
Diff
@@ -3,15 +3,12 @@ Copyright (c) 2018 Patrick Massot. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot, Kevin Buzzard, Scott Morrison, Johan Commelin, Chris Hughes,
   Johannes Hölzl, Yury Kudryashov
-
-! This file was ported from Lean 3 source module algebra.hom.group_instances
-! leanprover-community/mathlib commit c3291da49cfa65f0d43b094750541c0731edc932
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.GroupPower.Basic
 import Mathbin.Algebra.Ring.Basic
 
+#align_import algebra.hom.group_instances from "leanprover-community/mathlib"@"c3291da49cfa65f0d43b094750541c0731edc932"
+
 /-!
 # Instances on spaces of monoid and group morphisms
 
Diff
@@ -100,12 +100,14 @@ instance [AddCommGroup M] : Ring (AddMonoid.End M) :=
     intCast_ofNat := ofNat_zsmul _
     intCast_negSucc := negSucc_zsmul _ }
 
+#print AddMonoid.End.int_cast_apply /-
 /-- See also `add_monoid.End.int_cast_def`. -/
 @[simp]
 theorem AddMonoid.End.int_cast_apply [AddCommGroup M] (z : ℤ) (m : M) :
     (↑z : AddMonoid.End M) m = z • m :=
   rfl
 #align add_monoid.End.int_cast_apply AddMonoid.End.int_cast_apply
+-/
 
 /-!
 ### Morphisms of morphisms
@@ -117,12 +119,14 @@ is commutative.
 
 namespace MonoidHom
 
+#print MonoidHom.ext_iff₂ /-
 @[to_additive]
 theorem ext_iff₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} {f g : M →* N →* P} :
     f = g ↔ ∀ x y, f x y = g x y :=
   MonoidHom.ext_iff.trans <| forall_congr' fun _ => MonoidHom.ext_iff
 #align monoid_hom.ext_iff₂ MonoidHom.ext_iff₂
 #align add_monoid_hom.ext_iff₂ AddMonoidHom.ext_iff₂
+-/
 
 #print MonoidHom.flip /-
 /-- `flip` arguments of `f : M →* N →* P` -/
@@ -138,40 +142,50 @@ def flip {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M 
 #align add_monoid_hom.flip AddMonoidHom.flip
 -/
 
+#print MonoidHom.flip_apply /-
 @[simp, to_additive]
 theorem flip_apply {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
     (x : M) (y : N) : f.flip y x = f x y :=
   rfl
 #align monoid_hom.flip_apply MonoidHom.flip_apply
 #align add_monoid_hom.flip_apply AddMonoidHom.flip_apply
+-/
 
+#print MonoidHom.map_one₂ /-
 @[to_additive]
 theorem map_one₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
     (n : N) : f 1 n = 1 :=
   (flip f n).map_one
 #align monoid_hom.map_one₂ MonoidHom.map_one₂
 #align add_monoid_hom.map_one₂ AddMonoidHom.map_one₂
+-/
 
+#print MonoidHom.map_mul₂ /-
 @[to_additive]
 theorem map_mul₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
     (m₁ m₂ : M) (n : N) : f (m₁ * m₂) n = f m₁ n * f m₂ n :=
   (flip f n).map_mul _ _
 #align monoid_hom.map_mul₂ MonoidHom.map_mul₂
 #align add_monoid_hom.map_mul₂ AddMonoidHom.map_mul₂
+-/
 
+#print MonoidHom.map_inv₂ /-
 @[to_additive]
 theorem map_inv₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M →* N →* P) (m : M)
     (n : N) : f m⁻¹ n = (f m n)⁻¹ :=
   (flip f n).map_inv _
 #align monoid_hom.map_inv₂ MonoidHom.map_inv₂
 #align add_monoid_hom.map_inv₂ AddMonoidHom.map_inv₂
+-/
 
+#print MonoidHom.map_div₂ /-
 @[to_additive]
 theorem map_div₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M →* N →* P)
     (m₁ m₂ : M) (n : N) : f (m₁ / m₂) n = f m₁ n / f m₂ n :=
   (flip f n).map_div _ _
 #align monoid_hom.map_div₂ MonoidHom.map_div₂
 #align add_monoid_hom.map_div₂ AddMonoidHom.map_div₂
+-/
 
 #print MonoidHom.eval /-
 /-- Evaluation of a `monoid_hom` at a point as a monoid homomorphism. See also `monoid_hom.apply`
@@ -243,12 +257,14 @@ def compl₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q] (f :
 #align add_monoid_hom.compl₂ AddMonoidHom.compl₂
 -/
 
+#print MonoidHom.compl₂_apply /-
 @[simp, to_additive]
 theorem compl₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q]
     (f : M →* N →* P) (g : Q →* N) (m : M) (q : Q) : (compl₂ f g) m q = f m (g q) :=
   rfl
 #align monoid_hom.compl₂_apply MonoidHom.compl₂_apply
 #align add_monoid_hom.compl₂_apply AddMonoidHom.compl₂_apply
+-/
 
 #print MonoidHom.compr₂ /-
 /-- The expression `λ m n, g (f m n)` as a `monoid_hom`. -/
@@ -261,12 +277,14 @@ def compr₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f :
 #align add_monoid_hom.compr₂ AddMonoidHom.compr₂
 -/
 
+#print MonoidHom.compr₂_apply /-
 @[simp, to_additive]
 theorem compr₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f : M →* N →* P)
     (g : P →* Q) (m : M) (n : N) : (compr₂ f g) m n = g (f m n) :=
   rfl
 #align monoid_hom.compr₂_apply MonoidHom.compr₂_apply
 #align add_monoid_hom.compr₂_apply AddMonoidHom.compr₂_apply
+-/
 
 end MonoidHom
 
@@ -299,21 +317,28 @@ def AddMonoidHom.mul : R →+ R →+ R
 #align add_monoid_hom.mul AddMonoidHom.mul
 -/
 
+#print AddMonoidHom.mul_apply /-
 theorem AddMonoidHom.mul_apply (x y : R) : AddMonoidHom.mul x y = x * y :=
   rfl
 #align add_monoid_hom.mul_apply AddMonoidHom.mul_apply
+-/
 
+#print AddMonoidHom.coe_mul /-
 @[simp]
 theorem AddMonoidHom.coe_mul : ⇑(AddMonoidHom.mul : R →+ R →+ R) = AddMonoidHom.mulLeft :=
   rfl
 #align add_monoid_hom.coe_mul AddMonoidHom.coe_mul
+-/
 
+#print AddMonoidHom.coe_flip_mul /-
 @[simp]
 theorem AddMonoidHom.coe_flip_mul :
     ⇑(AddMonoidHom.mul : R →+ R →+ R).flip = AddMonoidHom.mulRight :=
   rfl
 #align add_monoid_hom.coe_flip_mul AddMonoidHom.coe_flip_mul
+-/
 
+#print AddMonoidHom.map_mul_iff /-
 /-- An `add_monoid_hom` preserves multiplication if pre- and post- composition with
 `add_monoid_hom.mul` are equivalent. By converting the statement into an equality of
 `add_monoid_hom`s, this lemma allows various specialized `ext` lemmas about `→+` to then be applied.
@@ -323,6 +348,7 @@ theorem AddMonoidHom.map_mul_iff (f : R →+ S) :
       (AddMonoidHom.mul : R →+ R →+ R).compr₂ f = (AddMonoidHom.mul.comp f).compl₂ f :=
   Iff.symm AddMonoidHom.ext_iff₂
 #align add_monoid_hom.map_mul_iff AddMonoidHom.map_mul_iff
+-/
 
 #print AddMonoid.End.mulLeft /-
 /-- The left multiplication map: `(a, b) ↦ a * b`. See also `add_monoid_hom.mul_left`. -/
Diff
@@ -57,7 +57,7 @@ instance {M G} [MulOneClass M] [CommGroup G] : CommGroup (M →* G) :=
   { MonoidHom.commMonoid with
     inv := Inv.inv
     div := Div.div
-    div_eq_mul_inv := by intros ; ext; apply div_eq_mul_inv
+    div_eq_mul_inv := by intros; ext; apply div_eq_mul_inv
     mul_left_inv := by intros <;> ext <;> apply mul_left_inv
     zpow := fun n f =>
       { toFun := fun x => f x ^ n
Diff
@@ -100,12 +100,6 @@ instance [AddCommGroup M] : Ring (AddMonoid.End M) :=
     intCast_ofNat := ofNat_zsmul _
     intCast_negSucc := negSucc_zsmul _ }
 
-/- warning: add_monoid.End.int_cast_apply -> AddMonoid.End.int_cast_apply is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : AddCommGroup.{u1} M] (z : Int) (m : M), Eq.{succ u1} M (coeFn.{succ u1, succ u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (fun (_x : AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) => M -> M) (FunLike.hasCoeToFun.{succ u1, succ u1, succ u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M (fun (_x : M) => M) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddZeroClass.toHasAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddZeroClass.toHasAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.End.addMonoidHomClass.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (HasLiftT.mk.{1, succ u1} Int (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (CoeTCₓ.coe.{1, succ u1} Int (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (Int.castCoe.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddGroupWithOne.toHasIntCast.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (Ring.toAddCommGroupWithOne.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddMonoid.End.ring.{u1} M _inst_1))))))) z) m) (SMul.smul.{0, u1} Int M (SubNegMonoid.SMulInt.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))) z m)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddCommGroup.{u1} M] (z : Int) (m : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => M) m) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => M) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.End.instAddMonoidHomClassEnd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))))) (Int.cast.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (Ring.toIntCast.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (instRingEndToAddZeroClassToAddMonoidToSubNegMonoidToAddGroup.{u1} M _inst_1)) z) m) (HSMul.hSMul.{0, u1, u1} Int M M (instHSMul.{0, u1} Int M (SubNegMonoid.SMulInt.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) z m)
-Case conversion may be inaccurate. Consider using '#align add_monoid.End.int_cast_apply AddMonoid.End.int_cast_applyₓ'. -/
 /-- See also `add_monoid.End.int_cast_def`. -/
 @[simp]
 theorem AddMonoid.End.int_cast_apply [AddCommGroup M] (z : ℤ) (m : M) :
@@ -123,9 +117,6 @@ is commutative.
 
 namespace MonoidHom
 
-/- warning: monoid_hom.ext_iff₂ -> MonoidHom.ext_iff₂ is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.ext_iff₂ MonoidHom.ext_iff₂ₓ'. -/
 @[to_additive]
 theorem ext_iff₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} {f g : M →* N →* P} :
     f = g ↔ ∀ x y, f x y = g x y :=
@@ -147,9 +138,6 @@ def flip {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M 
 #align add_monoid_hom.flip AddMonoidHom.flip
 -/
 
-/- warning: monoid_hom.flip_apply -> MonoidHom.flip_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.flip_apply MonoidHom.flip_applyₓ'. -/
 @[simp, to_additive]
 theorem flip_apply {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
     (x : M) (y : N) : f.flip y x = f x y :=
@@ -157,12 +145,6 @@ theorem flip_apply {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 #align monoid_hom.flip_apply MonoidHom.flip_apply
 #align add_monoid_hom.flip_apply AddMonoidHom.flip_apply
 
-/- warning: monoid_hom.map_one₂ -> MonoidHom.map_one₂ is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f (OfNat.ofNat.{u1} M 1 (OfNat.mk.{u1} M 1 (One.one.{u1} M (MulOneClass.toHasOne.{u1} M mM))))) n) (OfNat.ofNat.{u3} P 1 (OfNat.mk.{u3} P 1 (One.one.{u3} P (MulOneClass.toHasOne.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))))
-but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) n) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) 1 (One.toOfNat1.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (Monoid.toOne.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) mP))))
-Case conversion may be inaccurate. Consider using '#align monoid_hom.map_one₂ MonoidHom.map_one₂ₓ'. -/
 @[to_additive]
 theorem map_one₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
     (n : N) : f 1 n = 1 :=
@@ -170,9 +152,6 @@ theorem map_one₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 #align monoid_hom.map_one₂ MonoidHom.map_one₂
 #align add_monoid_hom.map_one₂ AddMonoidHom.map_one₂
 
-/- warning: monoid_hom.map_mul₂ -> MonoidHom.map_mul₂ is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.map_mul₂ MonoidHom.map_mul₂ₓ'. -/
 @[to_additive]
 theorem map_mul₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
     (m₁ m₂ : M) (n : N) : f (m₁ * m₂) n = f m₁ n * f m₂ n :=
@@ -180,9 +159,6 @@ theorem map_mul₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 #align monoid_hom.map_mul₂ MonoidHom.map_mul₂
 #align add_monoid_hom.map_mul₂ AddMonoidHom.map_mul₂
 
-/- warning: monoid_hom.map_inv₂ -> MonoidHom.map_inv₂ is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.map_inv₂ MonoidHom.map_inv₂ₓ'. -/
 @[to_additive]
 theorem map_inv₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M →* N →* P) (m : M)
     (n : N) : f m⁻¹ n = (f m n)⁻¹ :=
@@ -190,9 +166,6 @@ theorem map_inv₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M
 #align monoid_hom.map_inv₂ MonoidHom.map_inv₂
 #align add_monoid_hom.map_inv₂ AddMonoidHom.map_inv₂
 
-/- warning: monoid_hom.map_div₂ -> MonoidHom.map_div₂ is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.map_div₂ MonoidHom.map_div₂ₓ'. -/
 @[to_additive]
 theorem map_div₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M →* N →* P)
     (m₁ m₂ : M) (n : N) : f (m₁ / m₂) n = f m₁ n / f m₂ n :=
@@ -270,9 +243,6 @@ def compl₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q] (f :
 #align add_monoid_hom.compl₂ AddMonoidHom.compl₂
 -/
 
-/- warning: monoid_hom.compl₂_apply -> MonoidHom.compl₂_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.compl₂_apply MonoidHom.compl₂_applyₓ'. -/
 @[simp, to_additive]
 theorem compl₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q]
     (f : M →* N →* P) (g : Q →* N) (m : M) (q : Q) : (compl₂ f g) m q = f m (g q) :=
@@ -291,9 +261,6 @@ def compr₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f :
 #align add_monoid_hom.compr₂ AddMonoidHom.compr₂
 -/
 
-/- warning: monoid_hom.compr₂_apply -> MonoidHom.compr₂_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.compr₂_apply MonoidHom.compr₂_applyₓ'. -/
 @[simp, to_additive]
 theorem compr₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f : M →* N →* P)
     (g : P →* Q) (m : M) (n : N) : (compr₂ f g) m n = g (f m n) :=
@@ -332,33 +299,21 @@ def AddMonoidHom.mul : R →+ R →+ R
 #align add_monoid_hom.mul AddMonoidHom.mul
 -/
 
-/- warning: add_monoid_hom.mul_apply -> AddMonoidHom.mul_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mul_apply AddMonoidHom.mul_applyₓ'. -/
 theorem AddMonoidHom.mul_apply (x y : R) : AddMonoidHom.mul x y = x * y :=
   rfl
 #align add_monoid_hom.mul_apply AddMonoidHom.mul_apply
 
-/- warning: add_monoid_hom.coe_mul -> AddMonoidHom.coe_mul is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align add_monoid_hom.coe_mul AddMonoidHom.coe_mulₓ'. -/
 @[simp]
 theorem AddMonoidHom.coe_mul : ⇑(AddMonoidHom.mul : R →+ R →+ R) = AddMonoidHom.mulLeft :=
   rfl
 #align add_monoid_hom.coe_mul AddMonoidHom.coe_mul
 
-/- warning: add_monoid_hom.coe_flip_mul -> AddMonoidHom.coe_flip_mul is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align add_monoid_hom.coe_flip_mul AddMonoidHom.coe_flip_mulₓ'. -/
 @[simp]
 theorem AddMonoidHom.coe_flip_mul :
     ⇑(AddMonoidHom.mul : R →+ R →+ R).flip = AddMonoidHom.mulRight :=
   rfl
 #align add_monoid_hom.coe_flip_mul AddMonoidHom.coe_flip_mul
 
-/- warning: add_monoid_hom.map_mul_iff -> AddMonoidHom.map_mul_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align add_monoid_hom.map_mul_iff AddMonoidHom.map_mul_iffₓ'. -/
 /-- An `add_monoid_hom` preserves multiplication if pre- and post- composition with
 `add_monoid_hom.mul` are equivalent. By converting the statement into an equality of
 `add_monoid_hom`s, this lemma allows various specialized `ext` lemmas about `→+` to then be applied.
Diff
@@ -47,12 +47,8 @@ instance [MulOneClass M] [CommMonoid N] : CommMonoid (M →* N)
     { toFun := fun x => f x ^ n
       map_one' := by simp
       map_mul' := fun x y => by simp [mul_pow] }
-  npow_zero f := by
-    ext x
-    simp
-  npow_succ n f := by
-    ext x
-    simp [pow_succ]
+  npow_zero f := by ext x; simp
+  npow_succ n f := by ext x; simp [pow_succ]
 
 /-- If `G` is a commutative group, then `M →* G` is a commutative group too. -/
 @[to_additive
@@ -61,24 +57,15 @@ instance {M G} [MulOneClass M] [CommGroup G] : CommGroup (M →* G) :=
   { MonoidHom.commMonoid with
     inv := Inv.inv
     div := Div.div
-    div_eq_mul_inv := by
-      intros
-      ext
-      apply div_eq_mul_inv
+    div_eq_mul_inv := by intros ; ext; apply div_eq_mul_inv
     mul_left_inv := by intros <;> ext <;> apply mul_left_inv
     zpow := fun n f =>
       { toFun := fun x => f x ^ n
         map_one' := by simp
         map_mul' := fun x y => by simp [mul_zpow] }
-    zpow_zero' := fun f => by
-      ext x
-      simp
-    zpow_succ' := fun n f => by
-      ext x
-      simp [zpow_ofNat, pow_succ]
-    zpow_neg' := fun n f => by
-      ext x
-      simp }
+    zpow_zero' := fun f => by ext x; simp
+    zpow_succ' := fun n f => by ext x; simp [zpow_ofNat, pow_succ]
+    zpow_neg' := fun n f => by ext x; simp }
 
 instance [AddCommMonoid M] : AddCommMonoid (AddMonoid.End M) :=
   AddMonoidHom.addCommMonoid
@@ -250,12 +237,8 @@ def compHom [MulOneClass M] [CommMonoid N] [CommMonoid P] : (N →* P) →* (M 
     { toFun := g.comp
       map_one' := comp_one g
       map_mul' := comp_mul g }
-  map_one' := by
-    ext1 f
-    exact one_comp f
-  map_mul' g₁ g₂ := by
-    ext1 f
-    exact mul_comp g₁ g₂ f
+  map_one' := by ext1 f; exact one_comp f
+  map_mul' g₁ g₂ := by ext1 f; exact mul_comp g₁ g₂ f
 #align monoid_hom.comp_hom MonoidHom.compHom
 #align add_monoid_hom.comp_hom AddMonoidHom.compHom
 -/
Diff
@@ -137,10 +137,7 @@ is commutative.
 namespace MonoidHom
 
 /- warning: monoid_hom.ext_iff₂ -> MonoidHom.ext_iff₂ is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} {f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))} {g : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))}, Iff (Eq.{max (succ (max u3 u2)) (succ u1)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f g) (forall (x : M) (y : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f x) y) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) g x) y))
-but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} {f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))} {g : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))}, Iff (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f g) (forall (x : M) (y : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) y) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f x) y) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) g x) y))
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.ext_iff₂ MonoidHom.ext_iff₂ₓ'. -/
 @[to_additive]
 theorem ext_iff₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} {f g : M →* N →* P} :
@@ -164,10 +161,7 @@ def flip {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M 
 -/
 
 /- warning: monoid_hom.flip_apply -> MonoidHom.flip_apply is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (x : M) (y : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => M -> P) (MonoidHom.hasCoeToFun.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u1)) (succ u2), max (succ u2) (succ (max u3 u1))} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (fun (_x : MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) => N -> (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (MonoidHom.flip.{u1, u2, u3} M N P mM mN mP f) y) x) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f x) y)
-but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (x : M) (y : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M P (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u2, max (succ u1) (succ u3)} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u2, max u1 u3} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u2, max u1 u3} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP))) (MonoidHom.monoidHomClass.{u2, max u1 u3} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))))) (MonoidHom.flip.{u1, u2, u3} M N P mM mN mP f) y) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f x) y)
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.flip_apply MonoidHom.flip_applyₓ'. -/
 @[simp, to_additive]
 theorem flip_apply {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
@@ -190,10 +184,7 @@ theorem map_one₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 #align add_monoid_hom.map_one₂ AddMonoidHom.map_one₂
 
 /- warning: monoid_hom.map_mul₂ -> MonoidHom.map_mul₂ is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M mM)) m₁ m₂)) n) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f m₁) n) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f m₂) n))
-but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) n) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) mP)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f m₁) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f m₂) n))
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_mul₂ MonoidHom.map_mul₂ₓ'. -/
 @[to_additive]
 theorem map_mul₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
@@ -203,10 +194,7 @@ theorem map_mul₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 #align add_monoid_hom.map_mul₂ AddMonoidHom.map_mul₂
 
 /- warning: monoid_hom.map_inv₂ -> MonoidHom.map_inv₂ is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m : M) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f (Inv.inv.{u1} M (DivInvMonoid.toHasInv.{u1} M (Group.toDivInvMonoid.{u1} M mM)) m)) n) (Inv.inv.{u3} P (DivInvMonoid.toHasInv.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f m) n))
-but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) n) (Inv.inv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (InvOneClass.toInv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (DivInvOneMonoid.toInvOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (DivisionMonoid.toDivInvOneMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (DivisionCommMonoid.toDivisionMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (CommGroup.toDivisionCommMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) mP))))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m) n))
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_inv₂ MonoidHom.map_inv₂ₓ'. -/
 @[to_additive]
 theorem map_inv₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M →* N →* P) (m : M)
@@ -216,10 +204,7 @@ theorem map_inv₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M
 #align add_monoid_hom.map_inv₂ AddMonoidHom.map_inv₂
 
 /- warning: monoid_hom.map_div₂ -> MonoidHom.map_div₂ is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toHasDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) n) (HDiv.hDiv.{u3, u3, u3} P P P (instHDiv.{u3} P (DivInvMonoid.toHasDiv.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f m₁) n) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f m₂) n))
-but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) n) (HDiv.hDiv.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (instHDiv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (DivInvMonoid.toDiv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (CommGroup.toGroup.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) mP)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m₁) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m₂) n))
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_div₂ MonoidHom.map_div₂ₓ'. -/
 @[to_additive]
 theorem map_div₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M →* N →* P)
@@ -303,10 +288,7 @@ def compl₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q] (f :
 -/
 
 /- warning: monoid_hom.compl₂_apply -> MonoidHom.compl₂_apply is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : MulOneClass.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (m : M) (q : Q), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u4), max (succ u4) (succ u3)} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => Q -> P) (MonoidHom.hasCoeToFun.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (coeFn.{max (succ (max u3 u4)) (succ u1), max (succ u1) (succ (max u3 u4))} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (fun (_x : MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) => M -> (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (MonoidHom.hasCoeToFun.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (MonoidHom.compl₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) q) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) => M -> (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) f m) (coeFn.{max (succ u2) (succ u4), max (succ u4) (succ u2)} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (fun (_x : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) => Q -> N) (MonoidHom.hasCoeToFun.{u4, u2} Q N _inst_4 _inst_2) g q))
-but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : MulOneClass.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (m : M) (q : Q), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Q) => P) q) (FunLike.coe.{max (succ u3) (succ u4), succ u4, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Q) => P) _x) (MulHomClass.toFunLike.{max u3 u4, u4, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q P (MulOneClass.toMul.{u4} Q _inst_4) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u4, u4, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u4), succ u1, max (succ u3) (succ u4)} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u3) u4, u1, max u3 u4} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u3) u4, u1, max u3 u4} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))))) (MonoidHom.compl₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) q) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))))) f m) (FunLike.coe.{max (succ u2) (succ u4), succ u4, succ u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Q) => N) _x) (MulHomClass.toFunLike.{max u2 u4, u4, u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q N (MulOneClass.toMul.{u4} Q _inst_4) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u2 u4, u4, u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q N _inst_4 _inst_2 (MonoidHom.monoidHomClass.{u4, u2} Q N _inst_4 _inst_2))) g q))
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.compl₂_apply MonoidHom.compl₂_applyₓ'. -/
 @[simp, to_additive]
 theorem compl₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q]
@@ -327,10 +309,7 @@ def compr₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f :
 -/
 
 /- warning: monoid_hom.compr₂_apply -> MonoidHom.compr₂_apply is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : CommMonoid.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (m : M) (n : N), Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u2), max (succ u2) (succ u4)} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => N -> Q) (MonoidHom.hasCoeToFun.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (coeFn.{max (succ (max u4 u2)) (succ u1), max (succ u1) (succ (max u4 u2))} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (fun (_x : MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) => M -> (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (MonoidHom.hasCoeToFun.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (MonoidHom.compr₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) n) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) g (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) => M -> (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) f m) n))
-but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : CommMonoid.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (m : M) (n : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) n) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N Q (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u4), succ u1, max (succ u2) (succ u4)} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u4, u1, max u2 u4} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u4, u1, max u2 u4} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4))) (MonoidHom.monoidHomClass.{u1, max u2 u4} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))))) (MonoidHom.compr₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) n) (FunLike.coe.{max (succ u3) (succ u4), succ u3, succ u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) g (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))))) f m) n))
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.compr₂_apply MonoidHom.compr₂_applyₓ'. -/
 @[simp, to_additive]
 theorem compr₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f : M →* N →* P)
@@ -371,20 +350,14 @@ def AddMonoidHom.mul : R →+ R →+ R
 -/
 
 /- warning: add_monoid_hom.mul_apply -> AddMonoidHom.mul_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] (x : R) (y : R), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (fun (_x : AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) => R -> R) (AddMonoidHom.hasCoeToFun.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (fun (_x : AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) => R -> (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHom.hasCoeToFun.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHom.mul.{u1} R _inst_1) x) y) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1))) x y)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] (x : R) (y : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => R) y) (FunLike.coe.{succ u1, succ u1, succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) x) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => R) _x) (AddHomClass.toFunLike.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) x) R R (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) x) R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoidHom.addMonoidHomClass.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))))) (AddMonoidHom.mul.{u1} R _inst_1) x) y) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1)) x y)
+<too large>
 Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mul_apply AddMonoidHom.mul_applyₓ'. -/
 theorem AddMonoidHom.mul_apply (x y : R) : AddMonoidHom.mul x y = x * y :=
   rfl
 #align add_monoid_hom.mul_apply AddMonoidHom.mul_apply
 
 /- warning: add_monoid_hom.coe_mul -> AddMonoidHom.coe_mul is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R], Eq.{succ u1} (R -> (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (fun (_x : AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) => R -> (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHom.hasCoeToFun.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHom.mul.{u1} R _inst_1)) (AddMonoidHom.mulLeft.{u1} R _inst_1)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R], Eq.{succ u1} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))))) (AddMonoidHom.mul.{u1} R _inst_1)) (AddMonoidHom.mulLeft.{u1} R _inst_1)
+<too large>
 Case conversion may be inaccurate. Consider using '#align add_monoid_hom.coe_mul AddMonoidHom.coe_mulₓ'. -/
 @[simp]
 theorem AddMonoidHom.coe_mul : ⇑(AddMonoidHom.mul : R →+ R →+ R) = AddMonoidHom.mulLeft :=
@@ -392,10 +365,7 @@ theorem AddMonoidHom.coe_mul : ⇑(AddMonoidHom.mul : R →+ R →+ R) = AddMono
 #align add_monoid_hom.coe_mul AddMonoidHom.coe_mul
 
 /- warning: add_monoid_hom.coe_flip_mul -> AddMonoidHom.coe_flip_mul is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R], Eq.{succ u1} (R -> (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (fun (_x : AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) => R -> (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHom.hasCoeToFun.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHom.flip.{u1, u1, u1} R R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1) (AddMonoidHom.mul.{u1} R _inst_1))) (AddMonoidHom.mulRight.{u1} R _inst_1)
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R], Eq.{succ u1} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))))) (AddMonoidHom.flip.{u1, u1, u1} R R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1) (AddMonoidHom.mul.{u1} R _inst_1))) (AddMonoidHom.mulRight.{u1} R _inst_1)
+<too large>
 Case conversion may be inaccurate. Consider using '#align add_monoid_hom.coe_flip_mul AddMonoidHom.coe_flip_mulₓ'. -/
 @[simp]
 theorem AddMonoidHom.coe_flip_mul :
@@ -404,10 +374,7 @@ theorem AddMonoidHom.coe_flip_mul :
 #align add_monoid_hom.coe_flip_mul AddMonoidHom.coe_flip_mul
 
 /- warning: add_monoid_hom.map_mul_iff -> AddMonoidHom.map_mul_iff is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (f : AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))), Iff (forall (x : R) (y : R), Eq.{succ u2} S (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (fun (_x : AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) => R -> S) (AddMonoidHom.hasCoeToFun.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) f (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1))) x y)) (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (fun (_x : AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) => R -> S) (AddMonoidHom.hasCoeToFun.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) f x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (fun (_x : AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) => R -> S) (AddMonoidHom.hasCoeToFun.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) f y))) (Eq.{max (succ (max u2 u1)) (succ u1)} (AddMonoidHom.{u1, max u2 u1} R (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (AddMonoidHom.addCommMonoid.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2))))) (AddMonoidHom.compr₂.{u1, u1, u1, u2} R R R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2) (AddMonoidHom.mul.{u1} R _inst_1) f) (AddMonoidHom.compl₂.{u1, u2, u2, u1} R S S R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoidHom.comp.{u1, u2, u2} R S (AddMonoidHom.{u2, u2} S S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2))) (AddMonoid.toAddZeroClass.{u2} (AddMonoidHom.{u2, u2} S S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (AddCommMonoid.toAddMonoid.{u2} (AddMonoidHom.{u2, u2} S S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (AddMonoidHom.addCommMonoid.{u2, u2} S S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (AddMonoidHom.mul.{u2} S _inst_2) f) f))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (f : AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))), Iff (forall (x : R) (y : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1)) x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1)))) (AddZeroClass.toAdd.{u1} S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoidHom.addMonoidHomClass.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))))) f (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1)) x y)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) x) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) y) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) x) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) x) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) x) _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1)))) (AddZeroClass.toAdd.{u1} S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoidHom.addMonoidHomClass.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1)))) (AddZeroClass.toAdd.{u1} S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoidHom.addMonoidHomClass.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))))) f y))) (Eq.{max (succ u2) (succ u1)} (AddMonoidHom.{u2, max u1 u2} R (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHom.addCommMonoid.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))))) (AddMonoidHom.compr₂.{u2, u2, u2, u1} R R R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2) (AddMonoidHom.mul.{u2} R _inst_1) f) (AddMonoidHom.compl₂.{u2, u1, u1, u2} R S S R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2) (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoidHom.comp.{u2, u1, u1} R S (AddMonoidHom.{u1, u1} S S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} S S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} S S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHom.addCommMonoid.{u1, u1} S S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHom.mul.{u1} S _inst_2) f) f))
+<too large>
 Case conversion may be inaccurate. Consider using '#align add_monoid_hom.map_mul_iff AddMonoidHom.map_mul_iffₓ'. -/
 /-- An `add_monoid_hom` preserves multiplication if pre- and post- composition with
 `add_monoid_hom.mul` are equivalent. By converting the statement into an equality of
Diff
@@ -140,7 +140,7 @@ namespace MonoidHom
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} {f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))} {g : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))}, Iff (Eq.{max (succ (max u3 u2)) (succ u1)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f g) (forall (x : M) (y : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f x) y) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) g x) y))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} {f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))} {g : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))}, Iff (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f g) (forall (x : M) (y : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) y) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f x) y) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) g x) y))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} {f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))} {g : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))}, Iff (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f g) (forall (x : M) (y : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) y) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f x) y) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) g x) y))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.ext_iff₂ MonoidHom.ext_iff₂ₓ'. -/
 @[to_additive]
 theorem ext_iff₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} {f g : M →* N →* P} :
@@ -167,7 +167,7 @@ def flip {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M 
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (x : M) (y : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => M -> P) (MonoidHom.hasCoeToFun.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u1)) (succ u2), max (succ u2) (succ (max u3 u1))} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (fun (_x : MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) => N -> (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (MonoidHom.flip.{u1, u2, u3} M N P mM mN mP f) y) x) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f x) y)
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (x : M) (y : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M P (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u2, max (succ u1) (succ u3)} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u2, max u1 u3} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u2, max u1 u3} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP))) (MonoidHom.monoidHomClass.{u2, max u1 u3} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))))) (MonoidHom.flip.{u1, u2, u3} M N P mM mN mP f) y) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f x) y)
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (x : M) (y : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M P (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u2, max (succ u1) (succ u3)} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u2, max u1 u3} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u2, max u1 u3} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP))) (MonoidHom.monoidHomClass.{u2, max u1 u3} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))))) (MonoidHom.flip.{u1, u2, u3} M N P mM mN mP f) y) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f x) y)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.flip_apply MonoidHom.flip_applyₓ'. -/
 @[simp, to_additive]
 theorem flip_apply {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
@@ -180,7 +180,7 @@ theorem flip_apply {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f (OfNat.ofNat.{u1} M 1 (OfNat.mk.{u1} M 1 (One.one.{u1} M (MulOneClass.toHasOne.{u1} M mM))))) n) (OfNat.ofNat.{u3} P 1 (OfNat.mk.{u3} P 1 (One.one.{u3} P (MulOneClass.toHasOne.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) n) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) 1 (One.toOfNat1.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (Monoid.toOne.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) mP))))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) n) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) 1 (One.toOfNat1.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (Monoid.toOne.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) mP))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_one₂ MonoidHom.map_one₂ₓ'. -/
 @[to_additive]
 theorem map_one₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
@@ -193,7 +193,7 @@ theorem map_one₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M mM)) m₁ m₂)) n) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f m₁) n) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f m₂) n))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) n) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) mP)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f m₁) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f m₂) n))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) n) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) mP)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f m₁) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f m₂) n))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_mul₂ MonoidHom.map_mul₂ₓ'. -/
 @[to_additive]
 theorem map_mul₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
@@ -206,7 +206,7 @@ theorem map_mul₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m : M) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f (Inv.inv.{u1} M (DivInvMonoid.toHasInv.{u1} M (Group.toDivInvMonoid.{u1} M mM)) m)) n) (Inv.inv.{u3} P (DivInvMonoid.toHasInv.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f m) n))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) n) (Inv.inv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (InvOneClass.toInv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (DivInvOneMonoid.toInvOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (DivisionMonoid.toDivInvOneMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (DivisionCommMonoid.toDivisionMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (CommGroup.toDivisionCommMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) mP))))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m) n))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) n) (Inv.inv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (InvOneClass.toInv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (DivInvOneMonoid.toInvOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (DivisionMonoid.toDivInvOneMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (DivisionCommMonoid.toDivisionMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (CommGroup.toDivisionCommMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) mP))))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m) n))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_inv₂ MonoidHom.map_inv₂ₓ'. -/
 @[to_additive]
 theorem map_inv₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M →* N →* P) (m : M)
@@ -219,7 +219,7 @@ theorem map_inv₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toHasDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) n) (HDiv.hDiv.{u3, u3, u3} P P P (instHDiv.{u3} P (DivInvMonoid.toHasDiv.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f m₁) n) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f m₂) n))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) n) (HDiv.hDiv.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (instHDiv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (DivInvMonoid.toDiv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (CommGroup.toGroup.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) mP)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m₁) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m₂) n))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) n) (HDiv.hDiv.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (instHDiv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (DivInvMonoid.toDiv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) (CommGroup.toGroup.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) n) mP)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m₁) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m₂) n))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_div₂ MonoidHom.map_div₂ₓ'. -/
 @[to_additive]
 theorem map_div₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M →* N →* P)
@@ -306,7 +306,7 @@ def compl₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q] (f :
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : MulOneClass.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (m : M) (q : Q), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u4), max (succ u4) (succ u3)} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => Q -> P) (MonoidHom.hasCoeToFun.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (coeFn.{max (succ (max u3 u4)) (succ u1), max (succ u1) (succ (max u3 u4))} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (fun (_x : MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) => M -> (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (MonoidHom.hasCoeToFun.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (MonoidHom.compl₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) q) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) => M -> (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) f m) (coeFn.{max (succ u2) (succ u4), max (succ u4) (succ u2)} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (fun (_x : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) => Q -> N) (MonoidHom.hasCoeToFun.{u4, u2} Q N _inst_4 _inst_2) g q))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : MulOneClass.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (m : M) (q : Q), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Q) => P) q) (FunLike.coe.{max (succ u3) (succ u4), succ u4, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Q) => P) _x) (MulHomClass.toFunLike.{max u3 u4, u4, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q P (MulOneClass.toMul.{u4} Q _inst_4) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u4, u4, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u4), succ u1, max (succ u3) (succ u4)} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u3) u4, u1, max u3 u4} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u3) u4, u1, max u3 u4} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))))) (MonoidHom.compl₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) q) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))))) f m) (FunLike.coe.{max (succ u2) (succ u4), succ u4, succ u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Q) => N) _x) (MulHomClass.toFunLike.{max u2 u4, u4, u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q N (MulOneClass.toMul.{u4} Q _inst_4) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u2 u4, u4, u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q N _inst_4 _inst_2 (MonoidHom.monoidHomClass.{u4, u2} Q N _inst_4 _inst_2))) g q))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : MulOneClass.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (m : M) (q : Q), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Q) => P) q) (FunLike.coe.{max (succ u3) (succ u4), succ u4, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Q) => P) _x) (MulHomClass.toFunLike.{max u3 u4, u4, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q P (MulOneClass.toMul.{u4} Q _inst_4) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u4, u4, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u4), succ u1, max (succ u3) (succ u4)} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u3) u4, u1, max u3 u4} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u3) u4, u1, max u3 u4} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))))) (MonoidHom.compl₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) q) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))))) f m) (FunLike.coe.{max (succ u2) (succ u4), succ u4, succ u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Q) => N) _x) (MulHomClass.toFunLike.{max u2 u4, u4, u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q N (MulOneClass.toMul.{u4} Q _inst_4) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u2 u4, u4, u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q N _inst_4 _inst_2 (MonoidHom.monoidHomClass.{u4, u2} Q N _inst_4 _inst_2))) g q))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.compl₂_apply MonoidHom.compl₂_applyₓ'. -/
 @[simp, to_additive]
 theorem compl₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q]
@@ -330,7 +330,7 @@ def compr₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f :
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : CommMonoid.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (m : M) (n : N), Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u2), max (succ u2) (succ u4)} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => N -> Q) (MonoidHom.hasCoeToFun.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (coeFn.{max (succ (max u4 u2)) (succ u1), max (succ u1) (succ (max u4 u2))} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (fun (_x : MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) => M -> (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (MonoidHom.hasCoeToFun.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (MonoidHom.compr₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) n) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) g (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) => M -> (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) f m) n))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : CommMonoid.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (m : M) (n : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) n) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N Q (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u4), succ u1, max (succ u2) (succ u4)} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u4, u1, max u2 u4} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u4, u1, max u2 u4} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4))) (MonoidHom.monoidHomClass.{u1, max u2 u4} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))))) (MonoidHom.compr₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) n) (FunLike.coe.{max (succ u3) (succ u4), succ u3, succ u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) g (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))))) f m) n))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : CommMonoid.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (m : M) (n : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) n) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N Q (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u4), succ u1, max (succ u2) (succ u4)} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u4, u1, max u2 u4} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u4, u1, max u2 u4} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4))) (MonoidHom.monoidHomClass.{u1, max u2 u4} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))))) (MonoidHom.compr₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) n) (FunLike.coe.{max (succ u3) (succ u4), succ u3, succ u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) g (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))))) f m) n))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.compr₂_apply MonoidHom.compr₂_applyₓ'. -/
 @[simp, to_additive]
 theorem compr₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f : M →* N →* P)
Diff
@@ -115,7 +115,7 @@ instance [AddCommGroup M] : Ring (AddMonoid.End M) :=
 
 /- warning: add_monoid.End.int_cast_apply -> AddMonoid.End.int_cast_apply is a dubious translation:
 lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : AddCommGroup.{u1} M] (z : Int) (m : M), Eq.{succ u1} M (coeFn.{succ u1, succ u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (fun (_x : AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) => M -> M) (FunLike.hasCoeToFun.{succ u1, succ u1, succ u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M (fun (_x : M) => M) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddZeroClass.toHasAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddZeroClass.toHasAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.End.addMonoidHomClass.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (HasLiftT.mk.{1, succ u1} Int (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (CoeTCₓ.coe.{1, succ u1} Int (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (Int.castCoe.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddGroupWithOne.toHasIntCast.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (NonAssocRing.toAddGroupWithOne.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (Ring.toNonAssocRing.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddMonoid.End.ring.{u1} M _inst_1))))))) z) m) (SMul.smul.{0, u1} Int M (SubNegMonoid.SMulInt.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))) z m)
+  forall {M : Type.{u1}} [_inst_1 : AddCommGroup.{u1} M] (z : Int) (m : M), Eq.{succ u1} M (coeFn.{succ u1, succ u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (fun (_x : AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) => M -> M) (FunLike.hasCoeToFun.{succ u1, succ u1, succ u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M (fun (_x : M) => M) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddZeroClass.toHasAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddZeroClass.toHasAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.End.addMonoidHomClass.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (HasLiftT.mk.{1, succ u1} Int (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (CoeTCₓ.coe.{1, succ u1} Int (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (Int.castCoe.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddGroupWithOne.toHasIntCast.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddCommGroupWithOne.toAddGroupWithOne.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (Ring.toAddCommGroupWithOne.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddMonoid.End.ring.{u1} M _inst_1))))))) z) m) (SMul.smul.{0, u1} Int M (SubNegMonoid.SMulInt.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))) z m)
 but is expected to have type
   forall {M : Type.{u1}} [_inst_1 : AddCommGroup.{u1} M] (z : Int) (m : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => M) m) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => M) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.End.instAddMonoidHomClassEnd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))))) (Int.cast.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (Ring.toIntCast.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (instRingEndToAddZeroClassToAddMonoidToSubNegMonoidToAddGroup.{u1} M _inst_1)) z) m) (HSMul.hSMul.{0, u1, u1} Int M M (instHSMul.{0, u1} Int M (SubNegMonoid.SMulInt.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) z m)
 Case conversion may be inaccurate. Consider using '#align add_monoid.End.int_cast_apply AddMonoid.End.int_cast_applyₓ'. -/
Diff
@@ -117,7 +117,7 @@ instance [AddCommGroup M] : Ring (AddMonoid.End M) :=
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : AddCommGroup.{u1} M] (z : Int) (m : M), Eq.{succ u1} M (coeFn.{succ u1, succ u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (fun (_x : AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) => M -> M) (FunLike.hasCoeToFun.{succ u1, succ u1, succ u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M (fun (_x : M) => M) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddZeroClass.toHasAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddZeroClass.toHasAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.End.addMonoidHomClass.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))))))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (HasLiftT.mk.{1, succ u1} Int (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (CoeTCₓ.coe.{1, succ u1} Int (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (Int.castCoe.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddGroupWithOne.toHasIntCast.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (NonAssocRing.toAddGroupWithOne.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (Ring.toNonAssocRing.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddMonoid.End.ring.{u1} M _inst_1))))))) z) m) (SMul.smul.{0, u1} Int M (SubNegMonoid.SMulInt.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))) z m)
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : AddCommGroup.{u1} M] (z : Int) (m : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => M) m) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : M) => M) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.End.instAddMonoidHomClassEnd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))))) (Int.cast.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (Ring.toIntCast.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (instRingEndToAddZeroClassToAddMonoidToSubNegMonoidToAddGroup.{u1} M _inst_1)) z) m) (HSMul.hSMul.{0, u1, u1} Int M M (instHSMul.{0, u1} Int M (SubNegMonoid.SMulInt.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) z m)
+  forall {M : Type.{u1}} [_inst_1 : AddCommGroup.{u1} M] (z : Int) (m : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => M) m) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : M) => M) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) M M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) (AddMonoid.End.instAddMonoidHomClassEnd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))))) (Int.cast.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (Ring.toIntCast.{u1} (AddMonoid.End.{u1} M (AddMonoid.toAddZeroClass.{u1} M (SubNegMonoid.toAddMonoid.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1))))) (instRingEndToAddZeroClassToAddMonoidToSubNegMonoidToAddGroup.{u1} M _inst_1)) z) m) (HSMul.hSMul.{0, u1, u1} Int M M (instHSMul.{0, u1} Int M (SubNegMonoid.SMulInt.{u1} M (AddGroup.toSubNegMonoid.{u1} M (AddCommGroup.toAddGroup.{u1} M _inst_1)))) z m)
 Case conversion may be inaccurate. Consider using '#align add_monoid.End.int_cast_apply AddMonoid.End.int_cast_applyₓ'. -/
 /-- See also `add_monoid.End.int_cast_def`. -/
 @[simp]
@@ -140,7 +140,7 @@ namespace MonoidHom
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} {f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))} {g : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))}, Iff (Eq.{max (succ (max u3 u2)) (succ u1)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f g) (forall (x : M) (y : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f x) y) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) g x) y))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} {f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))} {g : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))}, Iff (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f g) (forall (x : M) (y : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) y) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f x) y) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) g x) y))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} {f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))} {g : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))}, Iff (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f g) (forall (x : M) (y : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) y) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f x) y) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) g x) y))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.ext_iff₂ MonoidHom.ext_iff₂ₓ'. -/
 @[to_additive]
 theorem ext_iff₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} {f g : M →* N →* P} :
@@ -167,7 +167,7 @@ def flip {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M 
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (x : M) (y : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => M -> P) (MonoidHom.hasCoeToFun.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u1)) (succ u2), max (succ u2) (succ (max u3 u1))} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (fun (_x : MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) => N -> (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (MonoidHom.flip.{u1, u2, u3} M N P mM mN mP f) y) x) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f x) y)
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (x : M) (y : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M P (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u2, max (succ u1) (succ u3)} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u2, max u1 u3} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u2, max u1 u3} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP))) (MonoidHom.monoidHomClass.{u2, max u1 u3} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))))) (MonoidHom.flip.{u1, u2, u3} M N P mM mN mP f) y) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f x) y)
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (x : M) (y : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M P (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u2, max (succ u1) (succ u3)} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u2, max u1 u3} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u2, max u1 u3} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP))) (MonoidHom.monoidHomClass.{u2, max u1 u3} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))))) (MonoidHom.flip.{u1, u2, u3} M N P mM mN mP f) y) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f x) y)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.flip_apply MonoidHom.flip_applyₓ'. -/
 @[simp, to_additive]
 theorem flip_apply {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
@@ -180,7 +180,7 @@ theorem flip_apply {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f (OfNat.ofNat.{u1} M 1 (OfNat.mk.{u1} M 1 (One.one.{u1} M (MulOneClass.toHasOne.{u1} M mM))))) n) (OfNat.ofNat.{u3} P 1 (OfNat.mk.{u3} P 1 (One.one.{u3} P (MulOneClass.toHasOne.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) n) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) 1 (One.toOfNat1.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (Monoid.toOne.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) mP))))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) n) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) 1 (One.toOfNat1.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (Monoid.toOne.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) mP))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_one₂ MonoidHom.map_one₂ₓ'. -/
 @[to_additive]
 theorem map_one₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
@@ -193,7 +193,7 @@ theorem map_one₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M mM)) m₁ m₂)) n) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f m₁) n) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f m₂) n))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) n) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) mP)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f m₁) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f m₂) n))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) n) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) mP)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f m₁) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f m₂) n))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_mul₂ MonoidHom.map_mul₂ₓ'. -/
 @[to_additive]
 theorem map_mul₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
@@ -206,7 +206,7 @@ theorem map_mul₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m : M) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f (Inv.inv.{u1} M (DivInvMonoid.toHasInv.{u1} M (Group.toDivInvMonoid.{u1} M mM)) m)) n) (Inv.inv.{u3} P (DivInvMonoid.toHasInv.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f m) n))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) n) (Inv.inv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (InvOneClass.toInv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (DivInvOneMonoid.toInvOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (DivisionMonoid.toDivInvOneMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (DivisionCommMonoid.toDivisionMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (CommGroup.toDivisionCommMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) mP))))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m) n))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) n) (Inv.inv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (InvOneClass.toInv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (DivInvOneMonoid.toInvOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (DivisionMonoid.toDivInvOneMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (DivisionCommMonoid.toDivisionMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (CommGroup.toDivisionCommMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) mP))))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m) n))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_inv₂ MonoidHom.map_inv₂ₓ'. -/
 @[to_additive]
 theorem map_inv₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M →* N →* P) (m : M)
@@ -219,7 +219,7 @@ theorem map_inv₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toHasDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) n) (HDiv.hDiv.{u3, u3, u3} P P P (instHDiv.{u3} P (DivInvMonoid.toHasDiv.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f m₁) n) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f m₂) n))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) n) (HDiv.hDiv.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (instHDiv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (DivInvMonoid.toDiv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (CommGroup.toGroup.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) mP)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m₁) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m₂) n))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) n) (HDiv.hDiv.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (instHDiv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (DivInvMonoid.toDiv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) (CommGroup.toGroup.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) n) mP)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m₁) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m₂) n))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_div₂ MonoidHom.map_div₂ₓ'. -/
 @[to_additive]
 theorem map_div₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M →* N →* P)
@@ -306,7 +306,7 @@ def compl₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q] (f :
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : MulOneClass.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (m : M) (q : Q), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u4), max (succ u4) (succ u3)} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => Q -> P) (MonoidHom.hasCoeToFun.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (coeFn.{max (succ (max u3 u4)) (succ u1), max (succ u1) (succ (max u3 u4))} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (fun (_x : MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) => M -> (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (MonoidHom.hasCoeToFun.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (MonoidHom.compl₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) q) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) => M -> (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) f m) (coeFn.{max (succ u2) (succ u4), max (succ u4) (succ u2)} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (fun (_x : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) => Q -> N) (MonoidHom.hasCoeToFun.{u4, u2} Q N _inst_4 _inst_2) g q))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : MulOneClass.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (m : M) (q : Q), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Q) => P) q) (FunLike.coe.{max (succ u3) (succ u4), succ u4, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Q) => P) _x) (MulHomClass.toFunLike.{max u3 u4, u4, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q P (MulOneClass.toMul.{u4} Q _inst_4) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u4, u4, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u4), succ u1, max (succ u3) (succ u4)} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u3) u4, u1, max u3 u4} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u3) u4, u1, max u3 u4} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))))) (MonoidHom.compl₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) q) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))))) f m) (FunLike.coe.{max (succ u2) (succ u4), succ u4, succ u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Q) => N) _x) (MulHomClass.toFunLike.{max u2 u4, u4, u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q N (MulOneClass.toMul.{u4} Q _inst_4) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u2 u4, u4, u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q N _inst_4 _inst_2 (MonoidHom.monoidHomClass.{u4, u2} Q N _inst_4 _inst_2))) g q))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : MulOneClass.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (m : M) (q : Q), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Q) => P) q) (FunLike.coe.{max (succ u3) (succ u4), succ u4, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Q) => P) _x) (MulHomClass.toFunLike.{max u3 u4, u4, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q P (MulOneClass.toMul.{u4} Q _inst_4) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u4, u4, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u4), succ u1, max (succ u3) (succ u4)} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u3) u4, u1, max u3 u4} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u3) u4, u1, max u3 u4} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))))) (MonoidHom.compl₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) q) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))))) f m) (FunLike.coe.{max (succ u2) (succ u4), succ u4, succ u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Q) => N) _x) (MulHomClass.toFunLike.{max u2 u4, u4, u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q N (MulOneClass.toMul.{u4} Q _inst_4) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u2 u4, u4, u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q N _inst_4 _inst_2 (MonoidHom.monoidHomClass.{u4, u2} Q N _inst_4 _inst_2))) g q))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.compl₂_apply MonoidHom.compl₂_applyₓ'. -/
 @[simp, to_additive]
 theorem compl₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q]
@@ -330,7 +330,7 @@ def compr₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f :
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : CommMonoid.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (m : M) (n : N), Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u2), max (succ u2) (succ u4)} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => N -> Q) (MonoidHom.hasCoeToFun.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (coeFn.{max (succ (max u4 u2)) (succ u1), max (succ u1) (succ (max u4 u2))} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (fun (_x : MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) => M -> (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (MonoidHom.hasCoeToFun.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (MonoidHom.compr₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) n) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) g (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) => M -> (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) f m) n))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : CommMonoid.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (m : M) (n : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) n) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N Q (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u4), succ u1, max (succ u2) (succ u4)} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u4, u1, max u2 u4} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u4, u1, max u2 u4} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4))) (MonoidHom.monoidHomClass.{u1, max u2 u4} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))))) (MonoidHom.compr₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) n) (FunLike.coe.{max (succ u3) (succ u4), succ u3, succ u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) g (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))))) f m) n))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : CommMonoid.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (m : M) (n : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) n) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N Q (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u4), succ u1, max (succ u2) (succ u4)} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u4, u1, max u2 u4} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u4, u1, max u2 u4} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4))) (MonoidHom.monoidHomClass.{u1, max u2 u4} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))))) (MonoidHom.compr₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) n) (FunLike.coe.{max (succ u3) (succ u4), succ u3, succ u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) g (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))))) f m) n))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.compr₂_apply MonoidHom.compr₂_applyₓ'. -/
 @[simp, to_additive]
 theorem compr₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f : M →* N →* P)
@@ -374,7 +374,7 @@ def AddMonoidHom.mul : R →+ R →+ R
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] (x : R) (y : R), Eq.{succ u1} R (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (fun (_x : AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) => R -> R) (AddMonoidHom.hasCoeToFun.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (fun (_x : AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) => R -> (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHom.hasCoeToFun.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHom.mul.{u1} R _inst_1) x) y) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1))) x y)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] (x : R) (y : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => R) y) (FunLike.coe.{succ u1, succ u1, succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) x) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => R) _x) (AddHomClass.toFunLike.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) x) R R (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) x) R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoidHom.addMonoidHomClass.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))))) (AddMonoidHom.mul.{u1} R _inst_1) x) y) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1)) x y)
+  forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] (x : R) (y : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => R) y) (FunLike.coe.{succ u1, succ u1, succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) x) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => R) _x) (AddHomClass.toFunLike.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) x) R R (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) x) R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoidHom.addMonoidHomClass.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))))) (AddMonoidHom.mul.{u1} R _inst_1) x) y) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1)) x y)
 Case conversion may be inaccurate. Consider using '#align add_monoid_hom.mul_apply AddMonoidHom.mul_applyₓ'. -/
 theorem AddMonoidHom.mul_apply (x y : R) : AddMonoidHom.mul x y = x * y :=
   rfl
@@ -384,7 +384,7 @@ theorem AddMonoidHom.mul_apply (x y : R) : AddMonoidHom.mul x y = x * y :=
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R], Eq.{succ u1} (R -> (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (fun (_x : AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) => R -> (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHom.hasCoeToFun.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHom.mul.{u1} R _inst_1)) (AddMonoidHom.mulLeft.{u1} R _inst_1)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R], Eq.{succ u1} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))))) (AddMonoidHom.mul.{u1} R _inst_1)) (AddMonoidHom.mulLeft.{u1} R _inst_1)
+  forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R], Eq.{succ u1} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))))) (AddMonoidHom.mul.{u1} R _inst_1)) (AddMonoidHom.mulLeft.{u1} R _inst_1)
 Case conversion may be inaccurate. Consider using '#align add_monoid_hom.coe_mul AddMonoidHom.coe_mulₓ'. -/
 @[simp]
 theorem AddMonoidHom.coe_mul : ⇑(AddMonoidHom.mul : R →+ R →+ R) = AddMonoidHom.mulLeft :=
@@ -395,7 +395,7 @@ theorem AddMonoidHom.coe_mul : ⇑(AddMonoidHom.mul : R →+ R →+ R) = AddMono
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R], Eq.{succ u1} (R -> (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (coeFn.{succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (fun (_x : AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) => R -> (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHom.hasCoeToFun.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHom.flip.{u1, u1, u1} R R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1) (AddMonoidHom.mul.{u1} R _inst_1))) (AddMonoidHom.mulRight.{u1} R _inst_1)
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R], Eq.{succ u1} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))))) (AddMonoidHom.flip.{u1, u1, u1} R R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1) (AddMonoidHom.mul.{u1} R _inst_1))) (AddMonoidHom.mulRight.{u1} R _inst_1)
+  forall {R : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R], Eq.{succ u1} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) _x) (AddHomClass.toFunLike.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddZeroClass.toAdd.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) (AddMonoidHomClass.toAddHomClass.{u1, u1, u1} (AddMonoidHom.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))) R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addMonoidHomClass.{u1, u1} R (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1)))) (AddMonoidHom.addCommMonoid.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))))))) (AddMonoidHom.flip.{u1, u1, u1} R R R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1) (AddMonoidHom.mul.{u1} R _inst_1))) (AddMonoidHom.mulRight.{u1} R _inst_1)
 Case conversion may be inaccurate. Consider using '#align add_monoid_hom.coe_flip_mul AddMonoidHom.coe_flip_mulₓ'. -/
 @[simp]
 theorem AddMonoidHom.coe_flip_mul :
@@ -407,7 +407,7 @@ theorem AddMonoidHom.coe_flip_mul :
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (f : AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))), Iff (forall (x : R) (y : R), Eq.{succ u2} S (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (fun (_x : AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) => R -> S) (AddMonoidHom.hasCoeToFun.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) f (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1))) x y)) (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (fun (_x : AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) => R -> S) (AddMonoidHom.hasCoeToFun.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) f x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (fun (_x : AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) => R -> S) (AddMonoidHom.hasCoeToFun.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) f y))) (Eq.{max (succ (max u2 u1)) (succ u1)} (AddMonoidHom.{u1, max u2 u1} R (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (AddMonoidHom.addCommMonoid.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2))))) (AddMonoidHom.compr₂.{u1, u1, u1, u2} R R R S (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2) (AddMonoidHom.mul.{u1} R _inst_1) f) (AddMonoidHom.compl₂.{u1, u2, u2, u1} R S S R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoidHom.comp.{u1, u2, u2} R S (AddMonoidHom.{u2, u2} S S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2))) (AddMonoid.toAddZeroClass.{u2} (AddMonoidHom.{u2, u2} S S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (AddCommMonoid.toAddMonoid.{u2} (AddMonoidHom.{u2, u2} S S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2))) (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (AddMonoidHom.addCommMonoid.{u2, u2} S S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S _inst_2)))) (AddMonoidHom.mul.{u2} S _inst_2) f) f))
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (f : AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))), Iff (forall (x : R) (y : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => S) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1)) x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => S) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1)))) (AddZeroClass.toAdd.{u1} S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoidHom.addMonoidHomClass.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))))) f (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1)) x y)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => S) x) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => S) y) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => S) x) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => S) x) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => S) x) _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => S) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1)))) (AddZeroClass.toAdd.{u1} S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoidHom.addMonoidHomClass.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : R) => S) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1)))) (AddZeroClass.toAdd.{u1} S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoidHom.addMonoidHomClass.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))))) f y))) (Eq.{max (succ u2) (succ u1)} (AddMonoidHom.{u2, max u1 u2} R (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHom.addCommMonoid.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))))) (AddMonoidHom.compr₂.{u2, u2, u2, u1} R R R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2) (AddMonoidHom.mul.{u2} R _inst_1) f) (AddMonoidHom.compl₂.{u2, u1, u1, u2} R S S R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2) (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoidHom.comp.{u2, u1, u1} R S (AddMonoidHom.{u1, u1} S S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} S S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} S S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHom.addCommMonoid.{u1, u1} S S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHom.mul.{u1} S _inst_2) f) f))
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (f : AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))), Iff (forall (x : R) (y : R), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1)) x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1)))) (AddZeroClass.toAdd.{u1} S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoidHom.addMonoidHomClass.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))))) f (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1)) x y)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) x) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) y) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) x) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) x) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) x) _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1)))) (AddZeroClass.toAdd.{u1} S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoidHom.addMonoidHomClass.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : R) => S) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddZeroClass.toAdd.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1)))) (AddZeroClass.toAdd.{u1} S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoidHom.addMonoidHomClass.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))))) f y))) (Eq.{max (succ u2) (succ u1)} (AddMonoidHom.{u2, max u1 u2} R (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{max u2 u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddCommMonoid.toAddMonoid.{max u2 u1} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHom.addCommMonoid.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))))) (AddMonoidHom.compr₂.{u2, u2, u2, u1} R R R S (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2) (AddMonoidHom.mul.{u2} R _inst_1) f) (AddMonoidHom.compl₂.{u2, u1, u1, u2} R S S R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2) (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoidHom.comp.{u2, u1, u1} R S (AddMonoidHom.{u1, u1} S S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} R _inst_1))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoid.toAddZeroClass.{u1} (AddMonoidHom.{u1, u1} S S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} (AddMonoidHom.{u1, u1} S S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHom.addCommMonoid.{u1, u1} S S (AddMonoid.toAddZeroClass.{u1} S (AddCommMonoid.toAddMonoid.{u1} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} S _inst_2)))) (AddMonoidHom.mul.{u1} S _inst_2) f) f))
 Case conversion may be inaccurate. Consider using '#align add_monoid_hom.map_mul_iff AddMonoidHom.map_mul_iffₓ'. -/
 /-- An `add_monoid_hom` preserves multiplication if pre- and post- composition with
 `add_monoid_hom.mul` are equivalent. By converting the statement into an equality of
Diff
@@ -365,7 +365,7 @@ and `algebra.lmul`.
 def AddMonoidHom.mul : R →+ R →+ R
     where
   toFun := AddMonoidHom.mulLeft
-  map_zero' := AddMonoidHom.ext <| zero_mul
+  map_zero' := AddMonoidHom.ext <| MulZeroClass.zero_mul
   map_add' a b := AddMonoidHom.ext <| add_mul a b
 #align add_monoid_hom.mul AddMonoidHom.mul
 -/
Diff
@@ -140,7 +140,7 @@ namespace MonoidHom
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} {f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))} {g : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))}, Iff (Eq.{max (succ (max u3 u2)) (succ u1)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f g) (forall (x : M) (y : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f x) y) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) g x) y))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} {f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))} {g : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))}, Iff (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f g) (forall (x : M) (y : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) y) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f x) y) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) g x) y))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} {f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))} {g : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))}, Iff (Eq.{max (max (succ u1) (succ u2)) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f g) (forall (x : M) (y : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) y) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f x) y) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) g x) y))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.ext_iff₂ MonoidHom.ext_iff₂ₓ'. -/
 @[to_additive]
 theorem ext_iff₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} {f g : M →* N →* P} :
@@ -167,7 +167,7 @@ def flip {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M 
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (x : M) (y : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => M -> P) (MonoidHom.hasCoeToFun.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u1)) (succ u2), max (succ u2) (succ (max u3 u1))} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (fun (_x : MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) => N -> (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u1} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (MonoidHom.flip.{u1, u2, u3} M N P mM mN mP f) y) x) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f x) y)
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (x : M) (y : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M P (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u2, max (succ u1) (succ u3)} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u2, max u1 u3} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u2, max u1 u3} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP))) (MonoidHom.monoidHomClass.{u2, max u1 u3} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))))) (MonoidHom.flip.{u1, u2, u3} M N P mM mN mP f) y) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f x) y)
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (x : M) (y : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M P (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) y) M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u2, max (succ u1) (succ u3)} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u2, max u1 u3} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u2, max u1 u3} (MonoidHom.{u2, max u3 u1} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))) N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP))) (MonoidHom.monoidHomClass.{u2, max u1 u3} N (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mN (Monoid.toMulOneClass.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u1 u3} (MonoidHom.{u1, u3} M P mM (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u1, u3} M P mM mP)))))) (MonoidHom.flip.{u1, u2, u3} M N P mM mN mP f) y) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) x) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f x) y)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.flip_apply MonoidHom.flip_applyₓ'. -/
 @[simp, to_additive]
 theorem flip_apply {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
@@ -180,7 +180,7 @@ theorem flip_apply {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f (OfNat.ofNat.{u1} M 1 (OfNat.mk.{u1} M 1 (One.one.{u1} M (MulOneClass.toHasOne.{u1} M mM))))) n) (OfNat.ofNat.{u3} P 1 (OfNat.mk.{u3} P 1 (One.one.{u3} P (MulOneClass.toHasOne.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) n) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) 1 (One.toOfNat1.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (Monoid.toOne.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) mP))))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (MulOneClass.toOne.{u1} M mM)))) n) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) 1 (One.toOfNat1.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (Monoid.toOne.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) mP))))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_one₂ MonoidHom.map_one₂ₓ'. -/
 @[to_additive]
 theorem map_one₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
@@ -193,7 +193,7 @@ theorem map_one₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M mM)) m₁ m₂)) n) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f m₁) n) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) f m₂) n))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) n) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) mP)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f m₁) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f m₂) n))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : MulOneClass.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommMonoid.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M mM)) m₁ m₂)) n) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) mP)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₁) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f m₁) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) m₂) N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP)) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MulOneClass.toMul.{u1} M mM) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) mM (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P mP))) (MonoidHom.commMonoid.{u2, u3} N P mN mP)))))) f m₂) n))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_mul₂ MonoidHom.map_mul₂ₓ'. -/
 @[to_additive]
 theorem map_mul₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M →* N →* P)
@@ -206,7 +206,7 @@ theorem map_mul₂ {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P}
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m : M) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f (Inv.inv.{u1} M (DivInvMonoid.toHasInv.{u1} M (Group.toDivInvMonoid.{u1} M mM)) m)) n) (Inv.inv.{u3} P (DivInvMonoid.toHasInv.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f m) n))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) n) (Inv.inv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (InvOneClass.toInv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (DivInvOneMonoid.toInvOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (DivisionMonoid.toDivInvOneMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (DivisionCommMonoid.toDivisionMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (CommGroup.toDivisionCommMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) mP))))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m) n))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f (Inv.inv.{u1} M (InvOneClass.toInv.{u1} M (DivInvOneMonoid.toInvOneClass.{u1} M (DivisionMonoid.toDivInvOneMonoid.{u1} M (Group.toDivisionMonoid.{u1} M mM)))) m)) n) (Inv.inv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (InvOneClass.toInv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (DivInvOneMonoid.toInvOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (DivisionMonoid.toDivInvOneMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (DivisionCommMonoid.toDivisionMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (CommGroup.toDivisionCommMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) mP))))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m) n))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_inv₂ MonoidHom.map_inv₂ₓ'. -/
 @[to_additive]
 theorem map_inv₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M →* N →* P) (m : M)
@@ -219,7 +219,7 @@ theorem map_inv₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toHasDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) n) (HDiv.hDiv.{u3, u3, u3} P P P (instHDiv.{u3} P (DivInvMonoid.toHasDiv.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f m₁) n) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (fun (_x : MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) => M -> (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u3 u2} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) f m₂) n))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) n) (HDiv.hDiv.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (instHDiv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (DivInvMonoid.toDiv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) (CommGroup.toGroup.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) n) mP)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m₁) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m₂) n))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {mM : Group.{u1} M} {mN : MulOneClass.{u2} N} {mP : CommGroup.{u3} P} (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (m₁ : M) (m₂ : M) (n : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f (HDiv.hDiv.{u1, u1, u1} M M M (instHDiv.{u1} M (DivInvMonoid.toDiv.{u1} M (Group.toDivInvMonoid.{u1} M mM))) m₁ m₂)) n) (HDiv.hDiv.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (instHDiv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (DivInvMonoid.toDiv.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (Group.toDivInvMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) (CommGroup.toGroup.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) n) mP)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₁) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m₁) n) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N P (MulOneClass.toMul.{u2} N mN) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) m₂) N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP)))) (MonoidHom.monoidHomClass.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM)))) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))) M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP))))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Monoid.toMulOneClass.{u1} M (DivInvMonoid.toMonoid.{u1} M (Group.toDivInvMonoid.{u1} M mM))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (DivInvMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (Group.toDivInvMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (CommGroup.toGroup.{max u2 u3} (MonoidHom.{u2, u3} N P mN (Monoid.toMulOneClass.{u3} P (DivInvMonoid.toMonoid.{u3} P (Group.toDivInvMonoid.{u3} P (CommGroup.toGroup.{u3} P mP))))) (MonoidHom.commGroup.{u2, u3} N P mN mP)))))))) f m₂) n))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.map_div₂ MonoidHom.map_div₂ₓ'. -/
 @[to_additive]
 theorem map_div₂ {mM : Group M} {mN : MulOneClass N} {mP : CommGroup P} (f : M →* N →* P)
@@ -306,7 +306,7 @@ def compl₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q] (f :
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : MulOneClass.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (m : M) (q : Q), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u4), max (succ u4) (succ u3)} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => Q -> P) (MonoidHom.hasCoeToFun.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (coeFn.{max (succ (max u3 u4)) (succ u1), max (succ u1) (succ (max u3 u4))} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (fun (_x : MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) => M -> (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (MonoidHom.hasCoeToFun.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (MonoidHom.compl₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) q) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) => M -> (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) f m) (coeFn.{max (succ u2) (succ u4), max (succ u4) (succ u2)} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (fun (_x : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) => Q -> N) (MonoidHom.hasCoeToFun.{u4, u2} Q N _inst_4 _inst_2) g q))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : MulOneClass.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (m : M) (q : Q), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Q) => P) q) (FunLike.coe.{max (succ u3) (succ u4), succ u4, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Q) => P) _x) (MulHomClass.toFunLike.{max u3 u4, u4, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q P (MulOneClass.toMul.{u4} Q _inst_4) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u4, u4, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u4), succ u1, max (succ u3) (succ u4)} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u3) u4, u1, max u3 u4} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u3) u4, u1, max u3 u4} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))))) (MonoidHom.compl₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) q) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))))) f m) (FunLike.coe.{max (succ u2) (succ u4), succ u4, succ u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Q) => N) _x) (MulHomClass.toFunLike.{max u2 u4, u4, u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q N (MulOneClass.toMul.{u4} Q _inst_4) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u2 u4, u4, u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q N _inst_4 _inst_2 (MonoidHom.monoidHomClass.{u4, u2} Q N _inst_4 _inst_2))) g q))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : MulOneClass.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u4, u2} Q N _inst_4 _inst_2) (m : M) (q : Q), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Q) => P) q) (FunLike.coe.{max (succ u3) (succ u4), succ u4, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Q) => P) _x) (MulHomClass.toFunLike.{max u3 u4, u4, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q P (MulOneClass.toMul.{u4} Q _inst_4) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u4, u4, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u4), succ u1, max (succ u3) (succ u4)} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u3) u4, u1, max u3 u4} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u3) u4, u1, max u3 u4} (MonoidHom.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))) M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u3 u4} M (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u4} (MonoidHom.{u4, u3} Q P _inst_4 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u4, u3} Q P _inst_4 _inst_3)))))) (MonoidHom.compl₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) q) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))))) f m) (FunLike.coe.{max (succ u2) (succ u4), succ u4, succ u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Q) => N) _x) (MulHomClass.toFunLike.{max u2 u4, u4, u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q N (MulOneClass.toMul.{u4} Q _inst_4) (MulOneClass.toMul.{u2} N _inst_2) (MonoidHomClass.toMulHomClass.{max u2 u4, u4, u2} (MonoidHom.{u4, u2} Q N _inst_4 _inst_2) Q N _inst_4 _inst_2 (MonoidHom.monoidHomClass.{u4, u2} Q N _inst_4 _inst_2))) g q))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.compl₂_apply MonoidHom.compl₂_applyₓ'. -/
 @[simp, to_additive]
 theorem compl₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q]
@@ -330,7 +330,7 @@ def compr₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f :
 lean 3 declaration is
   forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : CommMonoid.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (m : M) (n : N), Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u2), max (succ u2) (succ u4)} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => N -> Q) (MonoidHom.hasCoeToFun.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (coeFn.{max (succ (max u4 u2)) (succ u1), max (succ u1) (succ (max u4 u2))} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (fun (_x : MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) => M -> (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (MonoidHom.hasCoeToFun.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u4 u2} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (MonoidHom.compr₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) n) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) g (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (coeFn.{max (succ (max u3 u2)) (succ u1), max (succ u1) (succ (max u3 u2))} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (fun (_x : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) => M -> (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (MonoidHom.hasCoeToFun.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u3 u2} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) f m) n))
 but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : CommMonoid.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (m : M) (n : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) n) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N Q (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u4), succ u1, max (succ u2) (succ u4)} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u4, u1, max u2 u4} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u4, u1, max u2 u4} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4))) (MonoidHom.monoidHomClass.{u1, max u2 u4} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))))) (MonoidHom.compr₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) n) (FunLike.coe.{max (succ u3) (succ u4), succ u3, succ u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) _x) (MulHomClass.toFunLike.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) g (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))))) f m) n))
+  forall {M : Type.{u1}} {N : Type.{u2}} {P : Type.{u3}} {Q : Type.{u4}} [_inst_1 : MulOneClass.{u1} M] [_inst_2 : MulOneClass.{u2} N] [_inst_3 : CommMonoid.{u3} P] [_inst_4 : CommMonoid.{u4} Q] (f : MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (g : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (m : M) (n : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) n) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N Q (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) m) N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u4), succ u1, max (succ u2) (succ u4)} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u4, u1, max u2 u4} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u4, u1, max u2 u4} (MonoidHom.{u1, max u4 u2} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))) M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4))) (MonoidHom.monoidHomClass.{u1, max u2 u4} M (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) _inst_1 (Monoid.toMulOneClass.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (CommMonoid.toMonoid.{max u2 u4} (MonoidHom.{u2, u4} N Q _inst_2 (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.commMonoid.{u2, u4} N Q _inst_2 _inst_4)))))) (MonoidHom.compr₂.{u1, u2, u3, u4} M N P Q _inst_1 _inst_2 _inst_3 _inst_4 f g) m) n) (FunLike.coe.{max (succ u3) (succ u4), succ u3, succ u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) g (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P (MulOneClass.toMul.{u2} N _inst_2) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) m) N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u1, max (succ u2) (succ u3)} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _x) (MulHomClass.toFunLike.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M _inst_1) (MulOneClass.toMul.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) (MonoidHomClass.toMulHomClass.{max (max u1 u2) u3, u1, max u2 u3} (MonoidHom.{u1, max u3 u2} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))) M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3))) (MonoidHom.monoidHomClass.{u1, max u2 u3} M (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) _inst_1 (Monoid.toMulOneClass.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (CommMonoid.toMonoid.{max u2 u3} (MonoidHom.{u2, u3} N P _inst_2 (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.commMonoid.{u2, u3} N P _inst_2 _inst_3)))))) f m) n))
 Case conversion may be inaccurate. Consider using '#align monoid_hom.compr₂_apply MonoidHom.compr₂_applyₓ'. -/
 @[simp, to_additive]
 theorem compr₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f : M →* N →* P)

Changes in mathlib4

mathlib3
mathlib4
chore: Move monoid with zero instances on pi types (#12286)

Move everything that can't be additivised out of Algebra.Group.Pi.Lemmas:

Diff
@@ -6,7 +6,6 @@ Authors: Patrick Massot, Kevin Buzzard, Scott Morrison, Johan Commelin, Chris Hu
 -/
 import Mathlib.Algebra.Group.Hom.Basic
 import Mathlib.Algebra.GroupPower.Basic
-import Mathlib.Data.Nat.Cast.Defs
 
 #align_import algebra.hom.group_instances from "leanprover-community/mathlib"@"2ed7e4aec72395b6a7c3ac4ac7873a7a43ead17c"
 
@@ -23,6 +22,7 @@ operations.
 Finally, we provide the `Ring` structure on `AddMonoid.End`.
 -/
 
+assert_not_exists AddMonoidWithOne
 
 universe uM uN uP uQ
 
@@ -76,19 +76,6 @@ instance MonoidHom.commGroup {M G} [MulOneClass M] [CommGroup G] : CommGroup (M
 instance AddMonoid.End.instAddCommMonoid [AddCommMonoid M] : AddCommMonoid (AddMonoid.End M) :=
   AddMonoidHom.addCommMonoid
 
-instance AddMonoid.End.instAddMonoidWithOne (M) [AddCommMonoid M] :
-    AddMonoidWithOne (AddMonoid.End M) :=
-  { natCast := fun n => n • (1 : AddMonoid.End M),
-    natCast_zero := AddMonoid.nsmul_zero _,
-    natCast_succ := fun n => AddMonoid.nsmul_succ n 1 }
-
-/-- See also `AddMonoid.End.natCast_def`. -/
-@[simp]
-theorem AddMonoid.End.natCast_apply [AddCommMonoid M] (n : ℕ) (m : M) :
-    (↑n : AddMonoid.End M) m = n • m :=
-  rfl
-#align add_monoid.End.nat_cast_apply AddMonoid.End.natCast_apply
-
 @[simp]
 theorem AddMonoid.End.zero_apply [AddCommMonoid M] (m : M) : (0 : AddMonoid.End M) m = 0 :=
   rfl
@@ -97,12 +84,6 @@ theorem AddMonoid.End.zero_apply [AddCommMonoid M] (m : M) : (0 : AddMonoid.End
 theorem AddMonoid.End.one_apply [AddCommMonoid M] (m : M) : (1 : AddMonoid.End M) m = m :=
   rfl
 
--- See note [no_index around OfNat.ofNat]
-@[simp]
-theorem AddMonoid.End.ofNat_apply [AddCommMonoid M] (n : ℕ) [n.AtLeastTwo] (m : M) :
-    (no_index (OfNat.ofNat n : AddMonoid.End M)) m = n • m :=
-  rfl
-
 instance AddMonoid.End.instAddCommGroup [AddCommGroup M] : AddCommGroup (AddMonoid.End M) :=
   AddMonoidHom.addCommGroup
 
chore: Move monoid with zero instances on pi types (#12286)

Move everything that can't be additivised out of Algebra.Group.Pi.Lemmas:

Diff
@@ -24,20 +24,36 @@ universe uM uN uP uQ
 
 variable {M : Type uM} {N : Type uN} {P : Type uP} {Q : Type uQ}
 
+namespace AddMonoid.End
+
+instance instAddMonoidWithOne (M) [AddCommMonoid M] : AddMonoidWithOne (AddMonoid.End M) where
+  natCast n := n • (1 : AddMonoid.End M)
+  natCast_zero := AddMonoid.nsmul_zero _
+  natCast_succ n := AddMonoid.nsmul_succ n 1
+
+/-- See also `AddMonoid.End.natCast_def`. -/
+@[simp]
+lemma natCast_apply [AddCommMonoid M] (n : ℕ) (m : M) : (↑n : AddMonoid.End M) m = n • m := rfl
+#align add_monoid.End.nat_cast_apply AddMonoid.End.natCast_apply
+
+-- See note [no_index around OfNat.ofNat]
+@[simp] lemma ofNat_apply [AddCommMonoid M] (n : ℕ) [n.AtLeastTwo] (m : M) :
+    (no_index (OfNat.ofNat n : AddMonoid.End M)) m = n • m := rfl
 
-instance AddMonoid.End.instSemiring [AddCommMonoid M] : Semiring (AddMonoid.End M) :=
+instance instSemiring [AddCommMonoid M] : Semiring (AddMonoid.End M) :=
   { AddMonoid.End.monoid M, AddMonoidHom.addCommMonoid, AddMonoid.End.instAddMonoidWithOne M with
     zero_mul := fun _ => AddMonoidHom.ext fun _ => rfl,
     mul_zero := fun _ => AddMonoidHom.ext fun _ => AddMonoidHom.map_zero _,
     left_distrib := fun _ _ _ => AddMonoidHom.ext fun _ => AddMonoidHom.map_add _ _ _,
     right_distrib := fun _ _ _ => AddMonoidHom.ext fun _ => rfl }
 
-instance AddMonoid.End.instRing [AddCommGroup M] : Ring (AddMonoid.End M) :=
+instance instRing [AddCommGroup M] : Ring (AddMonoid.End M) :=
   { AddMonoid.End.instSemiring, AddMonoid.End.instAddCommGroup with
     intCast := fun z => z • (1 : AddMonoid.End M),
     intCast_ofNat := natCast_zsmul _,
     intCast_negSucc := negSucc_zsmul _ }
 
+end AddMonoid.End
 
 /-!
 ### Miscellaneous definitions
chore: refactor to avoid importing Ring for Group topics (#11913)

This is a far from a complete success at the PR title, but it makes a fair bit of progress, and then guards this with appropriate assert_not_exists Ring statements.

It also breaks apart the Mathlib.GroupTheory.Subsemigroup.[Center|Centralizer] files, to pull the Set.center and Set.centralizer declarations into their own files not depending on Subsemigroup.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>

Diff
@@ -6,7 +6,7 @@ Authors: Patrick Massot, Kevin Buzzard, Scott Morrison, Johan Commelin, Chris Hu
 -/
 import Mathlib.Algebra.Group.Hom.Basic
 import Mathlib.Algebra.GroupPower.Basic
-import Mathlib.Algebra.Ring.Basic
+import Mathlib.Data.Nat.Cast.Defs
 
 #align_import algebra.hom.group_instances from "leanprover-community/mathlib"@"2ed7e4aec72395b6a7c3ac4ac7873a7a43ead17c"
 
@@ -76,13 +76,9 @@ instance MonoidHom.commGroup {M G} [MulOneClass M] [CommGroup G] : CommGroup (M
 instance AddMonoid.End.instAddCommMonoid [AddCommMonoid M] : AddCommMonoid (AddMonoid.End M) :=
   AddMonoidHom.addCommMonoid
 
-instance AddMonoid.End.instSemiring [AddCommMonoid M] : Semiring (AddMonoid.End M) :=
-  { AddMonoid.End.monoid M, AddMonoidHom.addCommMonoid with
-    zero_mul := fun _ => AddMonoidHom.ext fun _ => rfl,
-    mul_zero := fun _ => AddMonoidHom.ext fun _ => AddMonoidHom.map_zero _,
-    left_distrib := fun _ _ _ => AddMonoidHom.ext fun _ => AddMonoidHom.map_add _ _ _,
-    right_distrib := fun _ _ _ => AddMonoidHom.ext fun _ => rfl,
-    natCast := fun n => n • (1 : AddMonoid.End M),
+instance AddMonoid.End.instAddMonoidWithOne (M) [AddCommMonoid M] :
+    AddMonoidWithOne (AddMonoid.End M) :=
+  { natCast := fun n => n • (1 : AddMonoid.End M),
     natCast_zero := AddMonoid.nsmul_zero _,
     natCast_succ := fun n => AddMonoid.nsmul_succ n 1 }
 
@@ -110,11 +106,8 @@ theorem AddMonoid.End.ofNat_apply [AddCommMonoid M] (n : ℕ) [n.AtLeastTwo] (m
 instance AddMonoid.End.instAddCommGroup [AddCommGroup M] : AddCommGroup (AddMonoid.End M) :=
   AddMonoidHom.addCommGroup
 
-instance AddMonoid.End.instRing [AddCommGroup M] : Ring (AddMonoid.End M) :=
-  { AddMonoid.End.instSemiring, AddMonoid.End.instAddCommGroup with
-    intCast := fun z => z • (1 : AddMonoid.End M),
-    intCast_ofNat := natCast_zsmul _,
-    intCast_negSucc := negSucc_zsmul _ }
+instance AddMonoid.End.instIntCast [AddCommGroup M] : IntCast (AddMonoid.End M) :=
+  { intCast := fun z => z • (1 : AddMonoid.End M) }
 
 /-- See also `AddMonoid.End.intCast_def`. -/
 @[simp]
@@ -294,91 +287,4 @@ theorem compr₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoi
 
 end MonoidHom
 
-/-!
-### Miscellaneous definitions
-
-Due to the fact this file imports `Algebra.GroupPower.Basic`, it is not possible to import it in
-some of the lower-level files like `Algebra.Ring.Basic`. The following lemmas should be rehomed
-if the import structure permits them to be.
--/
-
-
-section Semiring
-
-variable {R S : Type*} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S]
-
-/-- Multiplication of an element of a (semi)ring is an `AddMonoidHom` in both arguments.
-
-This is a more-strongly bundled version of `AddMonoidHom.mulLeft` and `AddMonoidHom.mulRight`.
-
-Stronger versions of this exists for algebras as `LinearMap.mul`, `NonUnitalAlgHom.mul`
-and `Algebra.lmul`.
--/
-def AddMonoidHom.mul : R →+ R →+ R where
-  toFun := AddMonoidHom.mulLeft
-  map_zero' := AddMonoidHom.ext <| zero_mul
-  map_add' a b := AddMonoidHom.ext <| add_mul a b
-#align add_monoid_hom.mul AddMonoidHom.mul
-
-theorem AddMonoidHom.mul_apply (x y : R) : AddMonoidHom.mul x y = x * y :=
-  rfl
-#align add_monoid_hom.mul_apply AddMonoidHom.mul_apply
-
-@[simp]
-theorem AddMonoidHom.coe_mul : ⇑(AddMonoidHom.mul : R →+ R →+ R) = AddMonoidHom.mulLeft :=
-  rfl
-#align add_monoid_hom.coe_mul AddMonoidHom.coe_mul
-
-@[simp]
-theorem AddMonoidHom.coe_flip_mul :
-    ⇑(AddMonoidHom.mul : R →+ R →+ R).flip = AddMonoidHom.mulRight :=
-  rfl
-#align add_monoid_hom.coe_flip_mul AddMonoidHom.coe_flip_mul
-
-/-- An `AddMonoidHom` preserves multiplication if pre- and post- composition with
-`AddMonoidHom.mul` are equivalent. By converting the statement into an equality of
-`AddMonoidHom`s, this lemma allows various specialized `ext` lemmas about `→+` to then be applied.
--/
-theorem AddMonoidHom.map_mul_iff (f : R →+ S) :
-    (∀ x y, f (x * y) = f x * f y) ↔
-      (AddMonoidHom.mul : R →+ R →+ R).compr₂ f = (AddMonoidHom.mul.comp f).compl₂ f :=
-  Iff.symm AddMonoidHom.ext_iff₂
-#align add_monoid_hom.map_mul_iff AddMonoidHom.map_mul_iff
-
-lemma AddMonoidHom.mulLeft_eq_mulRight_iff_forall_commute {a : R} :
-    mulLeft a = mulRight a ↔ ∀ b, Commute a b :=
-  DFunLike.ext_iff
-
-lemma AddMonoidHom.mulRight_eq_mulLeft_iff_forall_commute {b : R} :
-    mulRight b = mulLeft b ↔ ∀ a, Commute a b :=
-  DFunLike.ext_iff
-
-/-- The left multiplication map: `(a, b) ↦ a * b`. See also `AddMonoidHom.mulLeft`. -/
-@[simps!]
-def AddMonoid.End.mulLeft : R →+ AddMonoid.End R :=
-  AddMonoidHom.mul
-#align add_monoid.End.mul_left AddMonoid.End.mulLeft
-#align add_monoid.End.mul_left_apply_apply AddMonoid.End.mulLeft_apply_apply
-
-/-- The right multiplication map: `(a, b) ↦ b * a`. See also `AddMonoidHom.mulRight`. -/
-@[simps!]
-def AddMonoid.End.mulRight : R →+ AddMonoid.End R :=
-  (AddMonoidHom.mul : R →+ AddMonoid.End R).flip
-#align add_monoid.End.mul_right AddMonoid.End.mulRight
-#align add_monoid.End.mul_right_apply_apply AddMonoid.End.mulRight_apply_apply
-
-end Semiring
-
-section CommSemiring
-
-variable {R S : Type*} [NonUnitalNonAssocCommSemiring R]
-
-namespace AddMonoid.End
-
-lemma mulRight_eq_mulLeft : mulRight = (mulLeft : R →+ AddMonoid.End R) :=
-  AddMonoidHom.ext fun _ =>
-    Eq.symm <| AddMonoidHom.mulLeft_eq_mulRight_iff_forall_commute.2 (.all _)
-
-end AddMonoid.End
-
-end CommSemiring
+assert_not_exists Ring
chore: refactor to avoid importing Ring for Group topics (#11913)

This is a far from a complete success at the PR title, but it makes a fair bit of progress, and then guards this with appropriate assert_not_exists Ring statements.

It also breaks apart the Mathlib.GroupTheory.Subsemigroup.[Center|Centralizer] files, to pull the Set.center and Set.centralizer declarations into their own files not depending on Subsemigroup.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>

chore: Rename nat_cast/int_cast/rat_cast to natCast/intCast/ratCast (#11486)

Now that I am defining NNRat.cast, I want a definitive answer to this naming issue. Plenty of lemmas in mathlib already use natCast/intCast/ratCast over nat_cast/int_cast/rat_cast, and this matches with the general expectation that underscore-separated name parts correspond to a single declaration.

Diff
@@ -118,10 +118,10 @@ instance AddMonoid.End.instRing [AddCommGroup M] : Ring (AddMonoid.End M) :=
 
 /-- See also `AddMonoid.End.intCast_def`. -/
 @[simp]
-theorem AddMonoid.End.int_cast_apply [AddCommGroup M] (z : ℤ) (m : M) :
+theorem AddMonoid.End.intCast_apply [AddCommGroup M] (z : ℤ) (m : M) :
     (↑z : AddMonoid.End M) m = z • m :=
   rfl
-#align add_monoid.End.int_cast_apply AddMonoid.End.int_cast_apply
+#align add_monoid.End.int_cast_apply AddMonoid.End.intCast_apply
 
 /-!
 ### Morphisms of morphisms
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
@@ -84,7 +84,7 @@ instance AddMonoid.End.instSemiring [AddCommMonoid M] : Semiring (AddMonoid.End
     right_distrib := fun _ _ _ => AddMonoidHom.ext fun _ => rfl,
     natCast := fun n => n • (1 : AddMonoid.End M),
     natCast_zero := AddMonoid.nsmul_zero _,
-    natCast_succ := fun n => (AddMonoid.nsmul_succ n 1).trans (add_comm _ _) }
+    natCast_succ := fun n => AddMonoid.nsmul_succ n 1 }
 
 /-- See also `AddMonoid.End.natCast_def`. -/
 @[simp]
chore: Rename zpow_coe_nat to zpow_natCast (#11528)

... and add a deprecated alias for the old name. This is mostly just me discovering the power of F2

Diff
@@ -68,10 +68,10 @@ instance MonoidHom.commGroup {M G} [MulOneClass M] [CommGroup G] : CommGroup (M
       simp,
     zpow_succ' := fun n f => by
       ext x
-      simp [zpow_coe_nat, pow_succ],
+      simp [zpow_natCast, pow_succ],
     zpow_neg' := fun n f => by
       ext x
-      simp [Nat.succ_eq_add_one, zpow_coe_nat, -Int.natCast_add] }
+      simp [Nat.succ_eq_add_one, zpow_natCast, -Int.natCast_add] }
 
 instance AddMonoid.End.instAddCommMonoid [AddCommMonoid M] : AddCommMonoid (AddMonoid.End M) :=
   AddMonoidHom.addCommMonoid
@@ -113,7 +113,7 @@ instance AddMonoid.End.instAddCommGroup [AddCommGroup M] : AddCommGroup (AddMono
 instance AddMonoid.End.instRing [AddCommGroup M] : Ring (AddMonoid.End M) :=
   { AddMonoid.End.instSemiring, AddMonoid.End.instAddCommGroup with
     intCast := fun z => z • (1 : AddMonoid.End M),
-    intCast_ofNat := coe_nat_zsmul _,
+    intCast_ofNat := natCast_zsmul _,
     intCast_negSucc := negSucc_zsmul _ }
 
 /-- See also `AddMonoid.End.intCast_def`. -/
fix: correct statement of zpow_ofNat and ofNat_zsmul (#10969)

Previously these were syntactically identical to the corresponding zpow_coe_nat and coe_nat_zsmul lemmas, now they are about OfNat.ofNat.

Unfortunately, almost every call site uses the ofNat name to refer to Nat.cast, so the downstream proofs had to be adjusted too.

Diff
@@ -68,10 +68,10 @@ instance MonoidHom.commGroup {M G} [MulOneClass M] [CommGroup G] : CommGroup (M
       simp,
     zpow_succ' := fun n f => by
       ext x
-      simp [zpow_ofNat, pow_succ],
+      simp [zpow_coe_nat, pow_succ],
     zpow_neg' := fun n f => by
       ext x
-      simp [Nat.succ_eq_add_one, zpow_ofNat, -Int.natCast_add] }
+      simp [Nat.succ_eq_add_one, zpow_coe_nat, -Int.natCast_add] }
 
 instance AddMonoid.End.instAddCommMonoid [AddCommMonoid M] : AddCommMonoid (AddMonoid.End M) :=
   AddMonoidHom.addCommMonoid
@@ -113,7 +113,7 @@ instance AddMonoid.End.instAddCommGroup [AddCommGroup M] : AddCommGroup (AddMono
 instance AddMonoid.End.instRing [AddCommGroup M] : Ring (AddMonoid.End M) :=
   { AddMonoid.End.instSemiring, AddMonoid.End.instAddCommGroup with
     intCast := fun z => z • (1 : AddMonoid.End M),
-    intCast_ofNat := ofNat_zsmul _,
+    intCast_ofNat := coe_nat_zsmul _,
     intCast_negSucc := negSucc_zsmul _ }
 
 /-- See also `AddMonoid.End.intCast_def`. -/
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
@@ -93,6 +93,20 @@ theorem AddMonoid.End.natCast_apply [AddCommMonoid M] (n : ℕ) (m : M) :
   rfl
 #align add_monoid.End.nat_cast_apply AddMonoid.End.natCast_apply
 
+@[simp]
+theorem AddMonoid.End.zero_apply [AddCommMonoid M] (m : M) : (0 : AddMonoid.End M) m = 0 :=
+  rfl
+
+-- Note: `@[simp]` omitted because `(1 : AddMonoid.End M) = id` by `AddMonoid.coe_one`
+theorem AddMonoid.End.one_apply [AddCommMonoid M] (m : M) : (1 : AddMonoid.End M) m = m :=
+  rfl
+
+-- See note [no_index around OfNat.ofNat]
+@[simp]
+theorem AddMonoid.End.ofNat_apply [AddCommMonoid M] (n : ℕ) [n.AtLeastTwo] (m : M) :
+    (no_index (OfNat.ofNat n : AddMonoid.End M)) m = n • m :=
+  rfl
+
 instance AddMonoid.End.instAddCommGroup [AddCommGroup M] : AddCommGroup (AddMonoid.End M) :=
   AddMonoidHom.addCommGroup
 
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
@@ -122,7 +122,7 @@ namespace MonoidHom
 @[to_additive]
 theorem ext_iff₂ {_ : MulOneClass M} {_ : MulOneClass N} {_ : CommMonoid P} {f g : M →* N →* P} :
     f = g ↔ ∀ x y, f x y = g x y :=
-  FunLike.ext_iff.trans <| forall_congr' fun _ => FunLike.ext_iff
+  DFunLike.ext_iff.trans <| forall_congr' fun _ => DFunLike.ext_iff
 #align monoid_hom.ext_iff₂ MonoidHom.ext_iff₂
 #align add_monoid_hom.ext_iff₂ AddMonoidHom.ext_iff₂
 
@@ -333,11 +333,11 @@ theorem AddMonoidHom.map_mul_iff (f : R →+ S) :
 
 lemma AddMonoidHom.mulLeft_eq_mulRight_iff_forall_commute {a : R} :
     mulLeft a = mulRight a ↔ ∀ b, Commute a b :=
-  FunLike.ext_iff
+  DFunLike.ext_iff
 
 lemma AddMonoidHom.mulRight_eq_mulLeft_iff_forall_commute {b : R} :
     mulRight b = mulLeft b ↔ ∀ a, Commute a b :=
-  FunLike.ext_iff
+  DFunLike.ext_iff
 
 /-- The left multiplication map: `(a, b) ↦ a * b`. See also `AddMonoidHom.mulLeft`. -/
 @[simps!]
feat(RingTheory/NonUnitalSubsemiring): point-free statement of centrality (#9053)

Also adds isMulCentral_iff using mk_iff.

Diff
@@ -331,6 +331,14 @@ theorem AddMonoidHom.map_mul_iff (f : R →+ S) :
   Iff.symm AddMonoidHom.ext_iff₂
 #align add_monoid_hom.map_mul_iff AddMonoidHom.map_mul_iff
 
+lemma AddMonoidHom.mulLeft_eq_mulRight_iff_forall_commute {a : R} :
+    mulLeft a = mulRight a ↔ ∀ b, Commute a b :=
+  FunLike.ext_iff
+
+lemma AddMonoidHom.mulRight_eq_mulLeft_iff_forall_commute {b : R} :
+    mulRight b = mulLeft b ↔ ∀ a, Commute a b :=
+  FunLike.ext_iff
+
 /-- The left multiplication map: `(a, b) ↦ a * b`. See also `AddMonoidHom.mulLeft`. -/
 @[simps!]
 def AddMonoid.End.mulLeft : R →+ AddMonoid.End R :=
@@ -345,10 +353,6 @@ def AddMonoid.End.mulRight : R →+ AddMonoid.End R :=
 #align add_monoid.End.mul_right AddMonoid.End.mulRight
 #align add_monoid.End.mul_right_apply_apply AddMonoid.End.mulRight_apply_apply
 
-lemma AddMonoid.End.mulRight_eq_mulLeft_of_commute (a : R) (h : ∀ (b : R), Commute a b) :
-    mulRight a = mulLeft a :=
-  AddMonoidHom.ext fun _ ↦ (h _).eq.symm
-
 end Semiring
 
 section CommSemiring
@@ -357,9 +361,9 @@ variable {R S : Type*} [NonUnitalNonAssocCommSemiring R]
 
 namespace AddMonoid.End
 
-lemma comm_mulRight_eq_mulLeft : mulRight = (mulLeft : R →+ AddMonoid.End R) := by
-  ext a
-  exact mulRight_eq_mulLeft_of_commute _ (Commute.all _)
+lemma mulRight_eq_mulLeft : mulRight = (mulLeft : R →+ AddMonoid.End R) :=
+  AddMonoidHom.ext fun _ =>
+    Eq.symm <| AddMonoidHom.mulLeft_eq_mulRight_iff_forall_commute.2 (.all _)
 
 end AddMonoid.End
 
refactor(Algebra/Group/Defs): Separate commutative and associative multiplication (addition) (#7060)

Currently in Mathlib there is no class for magma that are commutative but not associative - Field extends CommRing and DivisionRing, CommRing extends Ring and CommMonoid, CommGroup extends Group and CommMonoid and CommMonoid extends CommSemigroup and Monoid. CommSemigroup currently extends only Semigroup and has mul_comm as a property.

This PR moves mul_comm into a new CommMagma (AddCommMagma) class which extends Mul (Add). CommSemigroup now extends Semigroup and CommMagma.

The rest of Mathlib4 compiles as before, except with the need to increase synthInstance.maxHeartbeats for lift_of_splits.

(Update: The linter is objecting to an unused argument in what seems to be a completely unrelated bit of code (AddEquiv.lpPiLp). Trying a nolint for now.)

Also referenced in https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/.60add_comm.60.20without.20.60add_assoc.60

Co-authored-by: Jireh Loreaux <loreaujy@gmail.com> Co-authored-by: Christopher Hoskin <mans0954@users.noreply.github.com> Co-authored-by: Christopher Hoskin <christopher.hoskin@overleaf.com> Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -345,4 +345,22 @@ def AddMonoid.End.mulRight : R →+ AddMonoid.End R :=
 #align add_monoid.End.mul_right AddMonoid.End.mulRight
 #align add_monoid.End.mul_right_apply_apply AddMonoid.End.mulRight_apply_apply
 
+lemma AddMonoid.End.mulRight_eq_mulLeft_of_commute (a : R) (h : ∀ (b : R), Commute a b) :
+    mulRight a = mulLeft a :=
+  AddMonoidHom.ext fun _ ↦ (h _).eq.symm
+
 end Semiring
+
+section CommSemiring
+
+variable {R S : Type*} [NonUnitalNonAssocCommSemiring R]
+
+namespace AddMonoid.End
+
+lemma comm_mulRight_eq_mulLeft : mulRight = (mulLeft : R →+ AddMonoid.End R) := by
+  ext a
+  exact mulRight_eq_mulLeft_of_commute _ (Commute.all _)
+
+end AddMonoid.End
+
+end CommSemiring
feat(Algebra/Group/Hom/Instances): missing instances on AddMonoid.End (#8741)

We already had these instance for AddMonoidHom, but did not copy them across.

This also corrects some instances names, both for cosmetic reasons, and to avoid name clashes.

Diff
@@ -73,10 +73,10 @@ instance MonoidHom.commGroup {M G} [MulOneClass M] [CommGroup G] : CommGroup (M
       ext x
       simp [Nat.succ_eq_add_one, zpow_ofNat, -Int.natCast_add] }
 
-instance [AddCommMonoid M] : AddCommMonoid (AddMonoid.End M) :=
+instance AddMonoid.End.instAddCommMonoid [AddCommMonoid M] : AddCommMonoid (AddMonoid.End M) :=
   AddMonoidHom.addCommMonoid
 
-instance AddMonoid.End.semiring [AddCommMonoid M] : Semiring (AddMonoid.End M) :=
+instance AddMonoid.End.instSemiring [AddCommMonoid M] : Semiring (AddMonoid.End M) :=
   { AddMonoid.End.monoid M, AddMonoidHom.addCommMonoid with
     zero_mul := fun _ => AddMonoidHom.ext fun _ => rfl,
     mul_zero := fun _ => AddMonoidHom.ext fun _ => AddMonoidHom.map_zero _,
@@ -93,11 +93,11 @@ theorem AddMonoid.End.natCast_apply [AddCommMonoid M] (n : ℕ) (m : M) :
   rfl
 #align add_monoid.End.nat_cast_apply AddMonoid.End.natCast_apply
 
-instance [AddCommGroup M] : AddCommGroup (AddMonoid.End M) :=
+instance AddMonoid.End.instAddCommGroup [AddCommGroup M] : AddCommGroup (AddMonoid.End M) :=
   AddMonoidHom.addCommGroup
 
-instance [AddCommGroup M] : Ring (AddMonoid.End M) :=
-  { AddMonoid.End.semiring, AddMonoidHom.addCommGroup with
+instance AddMonoid.End.instRing [AddCommGroup M] : Ring (AddMonoid.End M) :=
+  { AddMonoid.End.instSemiring, AddMonoid.End.instAddCommGroup with
     intCast := fun z => z • (1 : AddMonoid.End M),
     intCast_ofNat := ofNat_zsmul _,
     intCast_negSucc := negSucc_zsmul _ }
refactor(Algebra/Hom): transpose Hom and file name (#8095)

I believe the file defining a type of morphisms belongs alongside the file defining the structure this morphism works on. So I would like to reorganize the files in the Mathlib.Algebra.Hom folder so that e.g. Mathlib.Algebra.Hom.Ring becomes Mathlib.Algebra.Ring.Hom and Mathlib.Algebra.Hom.NonUnitalAlg becomes Mathlib.Algebra.Algebra.NonUnitalHom.

While fixing the imports I went ahead and sorted them for good luck.

The full list of changes is: renamed: Mathlib/Algebra/Hom/NonUnitalAlg.lean -> Mathlib/Algebra/Algebra/NonUnitalHom.lean renamed: Mathlib/Algebra/Hom/Aut.lean -> Mathlib/Algebra/Group/Aut.lean renamed: Mathlib/Algebra/Hom/Commute.lean -> Mathlib/Algebra/Group/Commute/Hom.lean renamed: Mathlib/Algebra/Hom/Embedding.lean -> Mathlib/Algebra/Group/Embedding.lean renamed: Mathlib/Algebra/Hom/Equiv/Basic.lean -> Mathlib/Algebra/Group/Equiv/Basic.lean renamed: Mathlib/Algebra/Hom/Equiv/TypeTags.lean -> Mathlib/Algebra/Group/Equiv/TypeTags.lean renamed: Mathlib/Algebra/Hom/Equiv/Units/Basic.lean -> Mathlib/Algebra/Group/Units/Equiv.lean renamed: Mathlib/Algebra/Hom/Equiv/Units/GroupWithZero.lean -> Mathlib/Algebra/GroupWithZero/Units/Equiv.lean renamed: Mathlib/Algebra/Hom/Freiman.lean -> Mathlib/Algebra/Group/Freiman.lean renamed: Mathlib/Algebra/Hom/Group/Basic.lean -> Mathlib/Algebra/Group/Hom/Basic.lean renamed: Mathlib/Algebra/Hom/Group/Defs.lean -> Mathlib/Algebra/Group/Hom/Defs.lean renamed: Mathlib/Algebra/Hom/GroupAction.lean -> Mathlib/GroupTheory/GroupAction/Hom.lean renamed: Mathlib/Algebra/Hom/GroupInstances.lean -> Mathlib/Algebra/Group/Hom/Instances.lean renamed: Mathlib/Algebra/Hom/Iterate.lean -> Mathlib/Algebra/GroupPower/IterateHom.lean renamed: Mathlib/Algebra/Hom/Centroid.lean -> Mathlib/Algebra/Ring/CentroidHom.lean renamed: Mathlib/Algebra/Hom/Ring/Basic.lean -> Mathlib/Algebra/Ring/Hom/Basic.lean renamed: Mathlib/Algebra/Hom/Ring/Defs.lean -> Mathlib/Algebra/Ring/Hom/Defs.lean renamed: Mathlib/Algebra/Hom/Units.lean -> Mathlib/Algebra/Group/Units/Hom.lean

Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Reorganizing.20.60Mathlib.2EAlgebra.2EHom.60

Diff
@@ -4,9 +4,9 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot, Kevin Buzzard, Scott Morrison, Johan Commelin, Chris Hughes,
   Johannes Hölzl, Yury Kudryashov
 -/
+import Mathlib.Algebra.Group.Hom.Basic
 import Mathlib.Algebra.GroupPower.Basic
 import Mathlib.Algebra.Ring.Basic
-import Mathlib.Algebra.Hom.Group.Basic
 
 #align_import algebra.hom.group_instances from "leanprover-community/mathlib"@"2ed7e4aec72395b6a7c3ac4ac7873a7a43ead17c"
 
chore: bump to std4#261 (#7141)

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

Diff
@@ -71,7 +71,7 @@ instance MonoidHom.commGroup {M G} [MulOneClass M] [CommGroup G] : CommGroup (M
       simp [zpow_ofNat, pow_succ],
     zpow_neg' := fun n f => by
       ext x
-      simp [Nat.succ_eq_add_one, zpow_ofNat] }
+      simp [Nat.succ_eq_add_one, zpow_ofNat, -Int.natCast_add] }
 
 instance [AddCommMonoid M] : AddCommMonoid (AddMonoid.End M) :=
   AddMonoidHom.addCommMonoid
refactor: split Algebra.Hom.Group and Algebra.Hom.Ring (#7094)

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

Diff
@@ -6,6 +6,7 @@ Authors: Patrick Massot, Kevin Buzzard, Scott Morrison, Johan Commelin, Chris Hu
 -/
 import Mathlib.Algebra.GroupPower.Basic
 import Mathlib.Algebra.Ring.Basic
+import Mathlib.Algebra.Hom.Group.Basic
 
 #align_import algebra.hom.group_instances from "leanprover-community/mathlib"@"2ed7e4aec72395b6a7c3ac4ac7873a7a43ead17c"
 
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
@@ -290,7 +290,7 @@ if the import structure permits them to be.
 
 section Semiring
 
-variable {R S : Type _} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S]
+variable {R S : Type*} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S]
 
 /-- Multiplication of an element of a (semi)ring is an `AddMonoidHom` in both arguments.
 
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
@@ -3,15 +3,12 @@ Copyright (c) 2018 Patrick Massot. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot, Kevin Buzzard, Scott Morrison, Johan Commelin, Chris Hughes,
   Johannes Hölzl, Yury Kudryashov
-
-! This file was ported from Lean 3 source module algebra.hom.group_instances
-! leanprover-community/mathlib commit 2ed7e4aec72395b6a7c3ac4ac7873a7a43ead17c
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.GroupPower.Basic
 import Mathlib.Algebra.Ring.Basic
 
+#align_import algebra.hom.group_instances from "leanprover-community/mathlib"@"2ed7e4aec72395b6a7c3ac4ac7873a7a43ead17c"
+
 /-!
 # Instances on spaces of monoid and group morphisms
 
chore: convert lambda in docs to fun (#5045)

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

Diff
@@ -188,11 +188,11 @@ def eval [MulOneClass M] [CommMonoid N] : M →* (M →* N) →* N :=
 #align monoid_hom.eval_apply_apply MonoidHom.eval_apply_apply
 #align add_monoid_hom.eval_apply_apply AddMonoidHom.eval_apply_apply
 
-/-- The expression `λ g m, g (f m)` as a `MonoidHom`.
-Equivalently, `(λ g, MonoidHom.comp g f)` as a `MonoidHom`. -/
+/-- The expression `fun g m ↦ g (f m)` as a `MonoidHom`.
+Equivalently, `(fun g ↦ MonoidHom.comp g f)` as a `MonoidHom`. -/
 @[to_additive (attr := simps!)
-      "The expression `λ g m, g (f m)` as an `AddMonoidHom`.
-      Equivalently, `(λ g, AddMonoidHom.comp g f)` as an `AddMonoidHom`.
+      "The expression `fun g m ↦ g (f m)` as an `AddMonoidHom`.
+      Equivalently, `(fun g ↦ AddMonoidHom.comp g f)` as an `AddMonoidHom`.
 
       This also exists in a `LinearMap` version, `LinearMap.lcomp`."]
 def compHom' [MulOneClass M] [MulOneClass N] [CommMonoid P] (f : M →* N) : (N →* P) →* M →* P :=
@@ -240,13 +240,13 @@ def flipHom {_ : MulOneClass M} {_ : MulOneClass N} {_ : CommMonoid P} :
 #align monoid_hom.flip_hom_apply MonoidHom.flipHom_apply
 #align add_monoid_hom.flip_hom_apply AddMonoidHom.flipHom_apply
 
-/-- The expression `λ m q, f m (g q)` as a `MonoidHom`.
+/-- The expression `fun m q ↦ f m (g q)` as a `MonoidHom`.
 
-Note that the expression `λ q n, f (g q) n` is simply `MonoidHom.comp`. -/
+Note that the expression `fun q n ↦ f (g q) n` is simply `MonoidHom.comp`. -/
 @[to_additive
-      "The expression `λ m q, f m (g q)` as an `AddMonoidHom`.
+      "The expression `fun m q ↦ f m (g q)` as an `AddMonoidHom`.
 
-      Note that the expression `λ q n, f (g q) n` is simply `AddMonoidHom.comp`.
+      Note that the expression `fun q n ↦ f (g q) n` is simply `AddMonoidHom.comp`.
 
       This also exists as a `LinearMap` version, `LinearMap.compl₂`"]
 def compl₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q] (f : M →* N →* P)
@@ -262,9 +262,9 @@ theorem compl₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneCla
 #align monoid_hom.compl₂_apply MonoidHom.compl₂_apply
 #align add_monoid_hom.compl₂_apply AddMonoidHom.compl₂_apply
 
-/-- The expression `λ m n, g (f m n)` as a `MonoidHom`. -/
+/-- The expression `fun m n ↦ g (f m n)` as a `MonoidHom`. -/
 @[to_additive
-      "The expression `λ m n, g (f m n)` as an `AddMonoidHom`.
+      "The expression `fun m n ↦ g (f m n)` as an `AddMonoidHom`.
 
       This also exists as a `LinearMap` version, `LinearMap.compr₂`"]
 def compr₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f : M →* N →* P)
chore: fix grammar 1/3 (#5001)

All of these are doc fixes

Diff
@@ -191,8 +191,8 @@ def eval [MulOneClass M] [CommMonoid N] : M →* (M →* N) →* N :=
 /-- The expression `λ g m, g (f m)` as a `MonoidHom`.
 Equivalently, `(λ g, MonoidHom.comp g f)` as a `MonoidHom`. -/
 @[to_additive (attr := simps!)
-      "The expression `λ g m, g (f m)` as a `AddMonoidHom`.
-      Equivalently, `(λ g, AddMonoidHom.comp g f)` as a `AddMonoidHom`.
+      "The expression `λ g m, g (f m)` as an `AddMonoidHom`.
+      Equivalently, `(λ g, AddMonoidHom.comp g f)` as an `AddMonoidHom`.
 
       This also exists in a `LinearMap` version, `LinearMap.lcomp`."]
 def compHom' [MulOneClass M] [MulOneClass N] [CommMonoid P] (f : M →* N) : (N →* P) →* M →* P :=
feat: to_additive raises linter errors; nested to_additive (#1819)
  • Turn info messages of to_additive into linter errors
  • Allow @[to_additive (attr := to_additive)] to additivize the generated lemma. This is useful for Pow -> SMul -> VAdd lemmas. We can write e.g. @[to_additive (attr := to_additive, simp)] to add the simp attribute to all 3 generated lemmas, and we can provide other options to each to_additive call separately (specifying a name / reorder).
  • The previous point was needed to cleanly get rid of some linter warnings. It also required some additional changes (addToAdditiveAttr now returns a value, turn a few (meta) definitions into mutual partial def, reorder some definitions, generalize additivizeLemmas to lists of more than 2 elements) that should have no visible effects for the user.
Diff
@@ -50,8 +50,7 @@ instance MonoidHom.commMonoid [MulOneClass M] [CommMonoid N] :
     simp [pow_succ]
 
 /-- If `G` is a commutative group, then `M →* G` is a commutative group too. -/
-@[to_additive AddMonoidHom.addCommGroup
-      "If `G` is an additive commutative group, then `M →+ G` is an additive commutative
+@[to_additive "If `G` is an additive commutative group, then `M →+ G` is an additive commutative
       group too."]
 instance MonoidHom.commGroup {M G} [MulOneClass M] [CommGroup G] : CommGroup (M →* G) :=
   { MonoidHom.commMonoid with
feat: require @[simps!] if simps runs in expensive mode (#1885)
  • This does not change the behavior of simps, just raises a linter error if you run simps in a more expensive mode without writing !.
  • Fixed some incorrect occurrences of to_additive, simps. Will do that systematically in future PR.
  • Fix port of OmegaCompletePartialOrder.ContinuousHom.ofMono a bit

Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>

Diff
@@ -179,7 +179,7 @@ theorem map_div₂ {_ : Group M} {_ : MulOneClass N} {_ : CommGroup P} (f : M 
 
 /-- Evaluation of a `MonoidHom` at a point as a monoid homomorphism. See also `MonoidHom.apply`
 for the evaluation of any function at a point. -/
-@[to_additive (attr := simps)
+@[to_additive (attr := simps!)
       "Evaluation of an `AddMonoidHom` at a point as an additive monoid homomorphism.
       See also `AddMonoidHom.apply` for the evaluation of any function at a point."]
 def eval [MulOneClass M] [CommMonoid N] : M →* (M →* N) →* N :=
@@ -191,7 +191,7 @@ def eval [MulOneClass M] [CommMonoid N] : M →* (M →* N) →* N :=
 
 /-- The expression `λ g m, g (f m)` as a `MonoidHom`.
 Equivalently, `(λ g, MonoidHom.comp g f)` as a `MonoidHom`. -/
-@[to_additive (attr := simps)
+@[to_additive (attr := simps!)
       "The expression `λ g m, g (f m)` as a `AddMonoidHom`.
       Equivalently, `(λ g, AddMonoidHom.comp g f)` as a `AddMonoidHom`.
 
@@ -335,14 +335,14 @@ theorem AddMonoidHom.map_mul_iff (f : R →+ S) :
 #align add_monoid_hom.map_mul_iff AddMonoidHom.map_mul_iff
 
 /-- The left multiplication map: `(a, b) ↦ a * b`. See also `AddMonoidHom.mulLeft`. -/
-@[simps]
+@[simps!]
 def AddMonoid.End.mulLeft : R →+ AddMonoid.End R :=
   AddMonoidHom.mul
 #align add_monoid.End.mul_left AddMonoid.End.mulLeft
 #align add_monoid.End.mul_left_apply_apply AddMonoid.End.mulLeft_apply_apply
 
 /-- The right multiplication map: `(a, b) ↦ b * a`. See also `AddMonoidHom.mulRight`. -/
-@[simps]
+@[simps!]
 def AddMonoid.End.mulRight : R →+ AddMonoid.End R :=
   (AddMonoidHom.mul : R →+ AddMonoid.End R).flip
 #align add_monoid.End.mul_right AddMonoid.End.mulRight
fix: use to_additive (attr := _) here and there (#2073)
Diff
@@ -179,41 +179,40 @@ theorem map_div₂ {_ : Group M} {_ : MulOneClass N} {_ : CommGroup P} (f : M 
 
 /-- Evaluation of a `MonoidHom` at a point as a monoid homomorphism. See also `MonoidHom.apply`
 for the evaluation of any function at a point. -/
-@[to_additive
+@[to_additive (attr := simps)
       "Evaluation of an `AddMonoidHom` at a point as an additive monoid homomorphism.
-      See also `AddMonoidHom.apply` for the evaluation of any function at a point.",
-  simps]
+      See also `AddMonoidHom.apply` for the evaluation of any function at a point."]
 def eval [MulOneClass M] [CommMonoid N] : M →* (M →* N) →* N :=
   (MonoidHom.id (M →* N)).flip
 #align monoid_hom.eval MonoidHom.eval
 #align add_monoid_hom.eval AddMonoidHom.eval
 #align monoid_hom.eval_apply_apply MonoidHom.eval_apply_apply
+#align add_monoid_hom.eval_apply_apply AddMonoidHom.eval_apply_apply
 
 /-- The expression `λ g m, g (f m)` as a `MonoidHom`.
 Equivalently, `(λ g, MonoidHom.comp g f)` as a `MonoidHom`. -/
-@[to_additive
+@[to_additive (attr := simps)
       "The expression `λ g m, g (f m)` as a `AddMonoidHom`.
       Equivalently, `(λ g, AddMonoidHom.comp g f)` as a `AddMonoidHom`.
 
-      This also exists in a `LinearMap` version, `LinearMap.lcomp`.",
-  simps]
+      This also exists in a `LinearMap` version, `LinearMap.lcomp`."]
 def compHom' [MulOneClass M] [MulOneClass N] [CommMonoid P] (f : M →* N) : (N →* P) →* M →* P :=
   flip <| eval.comp f
 #align monoid_hom.comp_hom' MonoidHom.compHom'
 #align add_monoid_hom.comp_hom' AddMonoidHom.compHom'
 #align monoid_hom.comp_hom'_apply_apply MonoidHom.compHom'_apply_apply
+#align add_monoid_hom.comp_hom'_apply_apply AddMonoidHom.compHom'_apply_apply
 
 /-- Composition of monoid morphisms (`MonoidHom.comp`) as a monoid morphism.
 
 Note that unlike `MonoidHom.comp_hom'` this requires commutativity of `N`. -/
-@[to_additive
+@[to_additive (attr := simps)
       "Composition of additive monoid morphisms (`AddMonoidHom.comp`) as an additive
       monoid morphism.
 
       Note that unlike `AddMonoidHom.comp_hom'` this requires commutativity of `N`.
 
-      This also exists in a `LinearMap` version, `LinearMap.llcomp`.",
-  simps]
+      This also exists in a `LinearMap` version, `LinearMap.llcomp`."]
 def compHom [MulOneClass M] [CommMonoid N] [CommMonoid P] :
     (N →* P) →* (M →* N) →* M →* P where
   toFun g := { toFun := g.comp, map_one' := comp_one g, map_mul' := comp_mul g }
@@ -226,12 +225,12 @@ def compHom [MulOneClass M] [CommMonoid N] [CommMonoid P] :
 #align monoid_hom.comp_hom MonoidHom.compHom
 #align add_monoid_hom.comp_hom AddMonoidHom.compHom
 #align monoid_hom.comp_hom_apply_apply MonoidHom.compHom_apply_apply
+#align add_monoid_hom.comp_hom_apply_apply AddMonoidHom.compHom_apply_apply
 
 /-- Flipping arguments of monoid morphisms (`MonoidHom.flip`) as a monoid morphism. -/
-@[to_additive
+@[to_additive (attr := simps)
       "Flipping arguments of additive monoid morphisms (`AddMonoidHom.flip`)
-      as an additive monoid morphism.",
-  simps]
+      as an additive monoid morphism."]
 def flipHom {_ : MulOneClass M} {_ : MulOneClass N} {_ : CommMonoid P} :
     (M →* N →* P) →* N →* M →* P where
   toFun := MonoidHom.flip
@@ -240,6 +239,7 @@ def flipHom {_ : MulOneClass M} {_ : MulOneClass N} {_ : CommMonoid P} :
 #align monoid_hom.flip_hom MonoidHom.flipHom
 #align add_monoid_hom.flip_hom AddMonoidHom.flipHom
 #align monoid_hom.flip_hom_apply MonoidHom.flipHom_apply
+#align add_monoid_hom.flip_hom_apply AddMonoidHom.flipHom_apply
 
 /-- The expression `λ m q, f m (g q)` as a `MonoidHom`.
 
chore: add missing #align statements (#1902)

This PR is the result of a slight variant on the following "algorithm"

  • take all mathlib 3 names, remove _ and make all uppercase letters into lowercase
  • take all mathlib 4 names, remove _ and make all uppercase letters into lowercase
  • look for matches, and create pairs (original_lean3_name, OriginalLean4Name)
  • for pairs that do not have an align statement:
    • use Lean 4 to lookup the file + position of the Lean 4 name
    • add an #align statement just before the next empty line
  • manually fix some tiny mistakes (e.g., empty lines in proofs might cause the #align statement to have been inserted too early)
Diff
@@ -187,6 +187,7 @@ def eval [MulOneClass M] [CommMonoid N] : M →* (M →* N) →* N :=
   (MonoidHom.id (M →* N)).flip
 #align monoid_hom.eval MonoidHom.eval
 #align add_monoid_hom.eval AddMonoidHom.eval
+#align monoid_hom.eval_apply_apply MonoidHom.eval_apply_apply
 
 /-- The expression `λ g m, g (f m)` as a `MonoidHom`.
 Equivalently, `(λ g, MonoidHom.comp g f)` as a `MonoidHom`. -/
@@ -200,6 +201,7 @@ def compHom' [MulOneClass M] [MulOneClass N] [CommMonoid P] (f : M →* N) : (N
   flip <| eval.comp f
 #align monoid_hom.comp_hom' MonoidHom.compHom'
 #align add_monoid_hom.comp_hom' AddMonoidHom.compHom'
+#align monoid_hom.comp_hom'_apply_apply MonoidHom.compHom'_apply_apply
 
 /-- Composition of monoid morphisms (`MonoidHom.comp`) as a monoid morphism.
 
@@ -223,6 +225,7 @@ def compHom [MulOneClass M] [CommMonoid N] [CommMonoid P] :
     exact mul_comp g₁ g₂ f
 #align monoid_hom.comp_hom MonoidHom.compHom
 #align add_monoid_hom.comp_hom AddMonoidHom.compHom
+#align monoid_hom.comp_hom_apply_apply MonoidHom.compHom_apply_apply
 
 /-- Flipping arguments of monoid morphisms (`MonoidHom.flip`) as a monoid morphism. -/
 @[to_additive
@@ -236,6 +239,7 @@ def flipHom {_ : MulOneClass M} {_ : MulOneClass N} {_ : CommMonoid P} :
   map_mul' _ _ := rfl
 #align monoid_hom.flip_hom MonoidHom.flipHom
 #align add_monoid_hom.flip_hom AddMonoidHom.flipHom
+#align monoid_hom.flip_hom_apply MonoidHom.flipHom_apply
 
 /-- The expression `λ m q, f m (g q)` as a `MonoidHom`.
 
@@ -335,11 +339,13 @@ theorem AddMonoidHom.map_mul_iff (f : R →+ S) :
 def AddMonoid.End.mulLeft : R →+ AddMonoid.End R :=
   AddMonoidHom.mul
 #align add_monoid.End.mul_left AddMonoid.End.mulLeft
+#align add_monoid.End.mul_left_apply_apply AddMonoid.End.mulLeft_apply_apply
 
 /-- The right multiplication map: `(a, b) ↦ b * a`. See also `AddMonoidHom.mulRight`. -/
 @[simps]
 def AddMonoid.End.mulRight : R →+ AddMonoid.End R :=
   (AddMonoidHom.mul : R →+ AddMonoid.End R).flip
 #align add_monoid.End.mul_right AddMonoid.End.mulRight
+#align add_monoid.End.mul_right_apply_apply AddMonoid.End.mulRight_apply_apply
 
 end Semiring
chore: fix bad name of instance (#1903)
Diff
@@ -53,7 +53,7 @@ instance MonoidHom.commMonoid [MulOneClass M] [CommMonoid N] :
 @[to_additive AddMonoidHom.addCommGroup
       "If `G` is an additive commutative group, then `M →+ G` is an additive commutative
       group too."]
-instance commGroup {M G} [MulOneClass M] [CommGroup G] : CommGroup (M →* G) :=
+instance MonoidHom.commGroup {M G} [MulOneClass M] [CommGroup G] : CommGroup (M →* G) :=
   { MonoidHom.commMonoid with
     inv := Inv.inv,
     div := Div.div,
chore: add #align statements for to_additive decls (#1816)

Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com>

Diff
@@ -127,6 +127,7 @@ theorem ext_iff₂ {_ : MulOneClass M} {_ : MulOneClass N} {_ : CommMonoid P} {f
     f = g ↔ ∀ x y, f x y = g x y :=
   FunLike.ext_iff.trans <| forall_congr' fun _ => FunLike.ext_iff
 #align monoid_hom.ext_iff₂ MonoidHom.ext_iff₂
+#align add_monoid_hom.ext_iff₂ AddMonoidHom.ext_iff₂
 
 /-- `flip` arguments of `f : M →* N →* P` -/
 @[to_additive "`flip` arguments of `f : M →+ N →+ P`"]
@@ -139,36 +140,42 @@ def flip {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M 
   map_one' := ext fun x => (f x).map_one
   map_mul' y₁ y₂ := ext fun x => (f x).map_mul y₁ y₂
 #align monoid_hom.flip MonoidHom.flip
+#align add_monoid_hom.flip AddMonoidHom.flip
 
 @[to_additive (attr := simp)]
 theorem flip_apply {_ : MulOneClass M} {_ : MulOneClass N} {_ : CommMonoid P} (f : M →* N →* P)
     (x : M) (y : N) : f.flip y x = f x y :=
   rfl
 #align monoid_hom.flip_apply MonoidHom.flip_apply
+#align add_monoid_hom.flip_apply AddMonoidHom.flip_apply
 
 @[to_additive]
 theorem map_one₂ {_ : MulOneClass M} {_ : MulOneClass N} {_ : CommMonoid P} (f : M →* N →* P)
     (n : N) : f 1 n = 1 :=
   (flip f n).map_one
 #align monoid_hom.map_one₂ MonoidHom.map_one₂
+#align add_monoid_hom.map_one₂ AddMonoidHom.map_one₂
 
 @[to_additive]
 theorem map_mul₂ {_ : MulOneClass M} {_ : MulOneClass N} {_ : CommMonoid P} (f : M →* N →* P)
     (m₁ m₂ : M) (n : N) : f (m₁ * m₂) n = f m₁ n * f m₂ n :=
   (flip f n).map_mul _ _
 #align monoid_hom.map_mul₂ MonoidHom.map_mul₂
+#align add_monoid_hom.map_mul₂ AddMonoidHom.map_mul₂
 
 @[to_additive]
 theorem map_inv₂ {_ : Group M} {_ : MulOneClass N} {_ : CommGroup P} (f : M →* N →* P) (m : M)
     (n : N) : f m⁻¹ n = (f m n)⁻¹ :=
   (flip f n).map_inv _
 #align monoid_hom.map_inv₂ MonoidHom.map_inv₂
+#align add_monoid_hom.map_inv₂ AddMonoidHom.map_inv₂
 
 @[to_additive]
 theorem map_div₂ {_ : Group M} {_ : MulOneClass N} {_ : CommGroup P} (f : M →* N →* P)
     (m₁ m₂ : M) (n : N) : f (m₁ / m₂) n = f m₁ n / f m₂ n :=
   (flip f n).map_div _ _
 #align monoid_hom.map_div₂ MonoidHom.map_div₂
+#align add_monoid_hom.map_div₂ AddMonoidHom.map_div₂
 
 /-- Evaluation of a `MonoidHom` at a point as a monoid homomorphism. See also `MonoidHom.apply`
 for the evaluation of any function at a point. -/
@@ -179,6 +186,7 @@ for the evaluation of any function at a point. -/
 def eval [MulOneClass M] [CommMonoid N] : M →* (M →* N) →* N :=
   (MonoidHom.id (M →* N)).flip
 #align monoid_hom.eval MonoidHom.eval
+#align add_monoid_hom.eval AddMonoidHom.eval
 
 /-- The expression `λ g m, g (f m)` as a `MonoidHom`.
 Equivalently, `(λ g, MonoidHom.comp g f)` as a `MonoidHom`. -/
@@ -191,6 +199,7 @@ Equivalently, `(λ g, MonoidHom.comp g f)` as a `MonoidHom`. -/
 def compHom' [MulOneClass M] [MulOneClass N] [CommMonoid P] (f : M →* N) : (N →* P) →* M →* P :=
   flip <| eval.comp f
 #align monoid_hom.comp_hom' MonoidHom.compHom'
+#align add_monoid_hom.comp_hom' AddMonoidHom.compHom'
 
 /-- Composition of monoid morphisms (`MonoidHom.comp`) as a monoid morphism.
 
@@ -213,6 +222,7 @@ def compHom [MulOneClass M] [CommMonoid N] [CommMonoid P] :
     ext1 f
     exact mul_comp g₁ g₂ f
 #align monoid_hom.comp_hom MonoidHom.compHom
+#align add_monoid_hom.comp_hom AddMonoidHom.compHom
 
 /-- Flipping arguments of monoid morphisms (`MonoidHom.flip`) as a monoid morphism. -/
 @[to_additive
@@ -225,6 +235,7 @@ def flipHom {_ : MulOneClass M} {_ : MulOneClass N} {_ : CommMonoid P} :
   map_one' := rfl
   map_mul' _ _ := rfl
 #align monoid_hom.flip_hom MonoidHom.flipHom
+#align add_monoid_hom.flip_hom AddMonoidHom.flipHom
 
 /-- The expression `λ m q, f m (g q)` as a `MonoidHom`.
 
@@ -239,12 +250,14 @@ def compl₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q] (f :
     (g : Q →* N) : M →* Q →* P :=
   (compHom' g).comp f
 #align monoid_hom.compl₂ MonoidHom.compl₂
+#align add_monoid_hom.compl₂ AddMonoidHom.compl₂
 
 @[to_additive (attr := simp)]
 theorem compl₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q]
     (f : M →* N →* P) (g : Q →* N) (m : M) (q : Q) : (compl₂ f g) m q = f m (g q) :=
   rfl
 #align monoid_hom.compl₂_apply MonoidHom.compl₂_apply
+#align add_monoid_hom.compl₂_apply AddMonoidHom.compl₂_apply
 
 /-- The expression `λ m n, g (f m n)` as a `MonoidHom`. -/
 @[to_additive
@@ -255,12 +268,14 @@ def compr₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f :
     (g : P →* Q) : M →* N →* Q :=
   (compHom g).comp f
 #align monoid_hom.compr₂ MonoidHom.compr₂
+#align add_monoid_hom.compr₂ AddMonoidHom.compr₂
 
 @[to_additive (attr := simp)]
 theorem compr₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f : M →* N →* P)
     (g : P →* Q) (m : M) (n : N) : (compr₂ f g) m n = g (f m n) :=
   rfl
 #align monoid_hom.compr₂_apply MonoidHom.compr₂_apply
+#align add_monoid_hom.compr₂_apply AddMonoidHom.compr₂_apply
 
 end MonoidHom
 
feat: improve the way to_additive deals with attributes (#1314)
  • The new syntax for any attributes that need to be copied by to_additive is @[to_additive (attrs := simp, ext, simps)]
  • Adds the auxiliary declarations generated by the simp and simps attributes to the to_additive-dictionary.
  • Future issue: Does not yet translate auxiliary declarations for other attributes (including custom simp-attributes). In particular it's possible that norm_cast might generate some auxiliary declarations.
  • Fixes #950
  • Fixes #953
  • Fixes #1149
  • This moves the interaction between to_additive and simps from the Simps file to the toAdditive file for uniformity.
  • Make the same changes to @[reassoc]

Co-authored-by: Johan Commelin <johan@commelin.net> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -140,7 +140,7 @@ def flip {mM : MulOneClass M} {mN : MulOneClass N} {mP : CommMonoid P} (f : M 
   map_mul' y₁ y₂ := ext fun x => (f x).map_mul y₁ y₂
 #align monoid_hom.flip MonoidHom.flip
 
-@[simp, to_additive]
+@[to_additive (attr := simp)]
 theorem flip_apply {_ : MulOneClass M} {_ : MulOneClass N} {_ : CommMonoid P} (f : M →* N →* P)
     (x : M) (y : N) : f.flip y x = f x y :=
   rfl
@@ -240,7 +240,7 @@ def compl₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q] (f :
   (compHom' g).comp f
 #align monoid_hom.compl₂ MonoidHom.compl₂
 
-@[simp, to_additive]
+@[to_additive (attr := simp)]
 theorem compl₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [MulOneClass Q]
     (f : M →* N →* P) (g : Q →* N) (m : M) (q : Q) : (compl₂ f g) m q = f m (g q) :=
   rfl
@@ -256,7 +256,7 @@ def compr₂ [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f :
   (compHom g).comp f
 #align monoid_hom.compr₂ MonoidHom.compr₂
 
-@[simp, to_additive]
+@[to_additive (attr := simp)]
 theorem compr₂_apply [MulOneClass M] [MulOneClass N] [CommMonoid P] [CommMonoid Q] (f : M →* N →* P)
     (g : P →* Q) (m : M) (n : N) : (compr₂ f g) m n = g (f m n) :=
   rfl
Diff
@@ -5,7 +5,7 @@ Authors: Patrick Massot, Kevin Buzzard, Scott Morrison, Johan Commelin, Chris Hu
   Johannes Hölzl, Yury Kudryashov
 
 ! This file was ported from Lean 3 source module algebra.hom.group_instances
-! leanprover-community/mathlib commit 3342d1b2178381196f818146ff79bc0e7ccd9e2d
+! leanprover-community/mathlib commit 2ed7e4aec72395b6a7c3ac4ac7873a7a43ead17c
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
chore: add source headers to ported theory files (#1094)

The script used to do this is included. The yaml file was obtained from https://raw.githubusercontent.com/wiki/leanprover-community/mathlib/mathlib4-port-status.md

Diff
@@ -3,6 +3,11 @@ Copyright (c) 2018 Patrick Massot. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot, Kevin Buzzard, Scott Morrison, Johan Commelin, Chris Hughes,
   Johannes Hölzl, Yury Kudryashov
+
+! This file was ported from Lean 3 source module algebra.hom.group_instances
+! leanprover-community/mathlib commit 3342d1b2178381196f818146ff79bc0e7ccd9e2d
+! Please do not edit these lines, except to modify the commit id
+! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.GroupPower.Basic
 import Mathlib.Algebra.Ring.Basic

Dependencies 35

36 files ported (100.0%)
14616 lines ported (100.0%)

All dependencies are ported!