algebra.hom.group_instances
⟷
Mathlib.Algebra.Group.Hom.Instances
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.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
-/
/-!
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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 /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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 /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -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₂
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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.
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce86f4e05e9a9b8da5e316b22c76ce76440c56a1
@@ -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ₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Move everything that can't be additivised out of Algebra.Group.Pi.Lemmas
:
MulZeroClass
, MulZeroOneClass
, etc... instances go to a new Algebra.GroupWithZero.Pi
file. I credit Eric W. for https://github.com/leanprover-community/mathlib/pull/4766.AddMonoidWithOne
, AddGroupWithOne
instances go to Algebra.Ring.Pi
.@@ -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
Move everything that can't be additivised out of Algebra.Group.Pi.Lemmas
:
MulZeroClass
, MulZeroOneClass
, etc... instances go to a new Algebra.GroupWithZero.Pi
file. I credit Eric W. for https://github.com/leanprover-community/mathlib/pull/4766.AddMonoidWithOne
, AddGroupWithOne
instances go to Algebra.Ring.Pi
.@@ -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
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>
@@ -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
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>
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.
@@ -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
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 notnpowRec n x * x
in the definition to make sure that definitional unfolding ofnpowRec
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.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
.@@ -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]
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
@@ -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`. -/
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.
@@ -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`. -/
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>
@@ -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
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>
@@ -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!]
Also adds isMulCentral_iff
using mk_iff
.
@@ -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
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>
@@ -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
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.
@@ -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 _ }
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
@@ -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"
@@ -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
@@ -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"
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -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.
@@ -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
@@ -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)
@@ -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 :=
to_additive
into linter errors@[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).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.@@ -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
simps
, just raises a linter error if you run simps
in a more expensive mode without writing !
.to_additive, simps
. Will do that systematically in future PR.OmegaCompletePartialOrder.ContinuousHom.ofMono
a bitCo-authored-by: Yury G. Kudryashov <urkud@urkud.name>
@@ -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
@@ -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`.
This PR is the result of a slight variant on the following "algorithm"
_
and make all uppercase letters into lowercase_
and make all uppercase letters into lowercase(original_lean3_name, OriginalLean4Name)
#align
statement just before the next empty line#align
statement to have been inserted too early)@@ -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
@@ -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,
@@ -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
to_additive
is @[to_additive (attrs := simp, ext, simps)]
simp
and simps
attributes to the to_additive
-dictionary.simp
-attributes). In particular it's possible that norm_cast
might generate some auxiliary declarations.to_additive
and simps
from the Simps
file to the toAdditive
file for uniformity.@[reassoc]
Co-authored-by: Johan Commelin <johan@commelin.net> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -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
Update SHAs after
@@ -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.
-/
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
@@ -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
All dependencies are ported!