group_theory.abelianization
⟷
Mathlib.GroupTheory.Abelianization
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)
(last sync)
centralizer
from subgroup G
to set G
(#18965)
This is consistent with all the other sub<foo>.centralizer
definitions.
This generalization reveals that a lot of downstream results are rather strangely stated about zpowers
.
This does not attempt to change these, instead leaving the work for a follow up (either in a later mathlib3 PR or in mathlib4).
@@ -32,6 +32,8 @@ universes u v w
-- Let G be a group.
variables (G : Type u) [group G]
+open subgroup (centralizer)
+
/-- The commutator subgroup of a group G is the normal subgroup
generated by the commutators [p,q]=`p*q*p⁻¹*q⁻¹`. -/
@[derive subgroup.normal]
@@ -64,12 +66,13 @@ begin
end
lemma commutator_centralizer_commutator_le_center :
- ⁅(commutator G).centralizer, (commutator G).centralizer⁆ ≤ subgroup.center G :=
+ ⁅centralizer (commutator G : set G), centralizer (commutator G : set G)⁆ ≤ subgroup.center G :=
begin
- rw [←subgroup.centralizer_top, ←subgroup.commutator_eq_bot_iff_le_centralizer],
- suffices : ⁅⁅⊤, (commutator G).centralizer⁆, (commutator G).centralizer⁆ = ⊥,
+ rw [←subgroup.centralizer_univ, ←subgroup.coe_top,
+ ←subgroup.commutator_eq_bot_iff_le_centralizer],
+ suffices : ⁅⁅⊤, centralizer (commutator G : set G)⁆, centralizer (commutator G : set G)⁆ = ⊥,
{ refine subgroup.commutator_commutator_eq_bot_of_rotate _ this,
- rwa subgroup.commutator_comm (commutator G).centralizer },
+ rwa subgroup.commutator_comm (centralizer (commutator G : set G)) },
rw [subgroup.commutator_comm, subgroup.commutator_eq_bot_iff_le_centralizer],
exact set.centralizer_subset (subgroup.commutator_mono le_top le_top),
end
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2018 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Michael Howes
-/
-import Mathbin.Data.Finite.Card
-import Mathbin.GroupTheory.Commutator
-import Mathbin.GroupTheory.Finiteness
+import Data.Finite.Card
+import GroupTheory.Commutator
+import GroupTheory.Finiteness
#align_import group_theory.abelianization from "leanprover-community/mathlib"@"4be589053caf347b899a494da75410deb55fb3ef"
mathlib commit https://github.com/leanprover-community/mathlib/commit/c0c52abb75074ed8b73a948341f50521fbf43b4c
@@ -7,7 +7,7 @@ import Mathbin.Data.Finite.Card
import Mathbin.GroupTheory.Commutator
import Mathbin.GroupTheory.Finiteness
-#align_import group_theory.abelianization from "leanprover-community/mathlib"@"34ee86e6a59d911a8e4f89b68793ee7577ae79c7"
+#align_import group_theory.abelianization from "leanprover-community/mathlib"@"4be589053caf347b899a494da75410deb55fb3ef"
/-!
# The abelianization of a group
@@ -35,6 +35,8 @@ universe u v w
-- Let G be a group.
variable (G : Type u) [Group G]
+open Subgroup (centralizer)
+
#print commutator /-
/-- The commutator subgroup of a group G is the normal subgroup
generated by the commutators [p,q]=`p*q*p⁻¹*q⁻¹`. -/
@@ -84,13 +86,14 @@ theorem rank_commutator_le_card [Finite (commutatorSet G)] :
#print commutator_centralizer_commutator_le_center /-
theorem commutator_centralizer_commutator_le_center :
- ⁅(commutator G).centralizer, (commutator G).centralizer⁆ ≤ Subgroup.center G :=
+ ⁅centralizer (commutator G : Set G), centralizer (commutator G : Set G)⁆ ≤ Subgroup.center G :=
by
- rw [← Subgroup.centralizer_top, ← Subgroup.commutator_eq_bot_iff_le_centralizer]
- suffices ⁅⁅⊤, (commutator G).centralizer⁆, (commutator G).centralizer⁆ = ⊥
+ rw [← Subgroup.centralizer_univ, ← Subgroup.coe_top, ←
+ Subgroup.commutator_eq_bot_iff_le_centralizer]
+ suffices ⁅⁅⊤, centralizer (commutator G : Set G)⁆, centralizer (commutator G : Set G)⁆ = ⊥
by
refine' Subgroup.commutator_commutator_eq_bot_of_rotate _ this
- rwa [Subgroup.commutator_comm (commutator G).centralizer]
+ rwa [Subgroup.commutator_comm (centralizer (commutator G : Set G))]
rw [Subgroup.commutator_comm, Subgroup.commutator_eq_bot_iff_le_centralizer]
exact Set.centralizer_subset (Subgroup.commutator_mono le_top le_top)
#align commutator_centralizer_commutator_le_center commutator_centralizer_commutator_le_center
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2018 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Michael Howes
-
-! This file was ported from Lean 3 source module group_theory.abelianization
-! leanprover-community/mathlib commit 34ee86e6a59d911a8e4f89b68793ee7577ae79c7
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Data.Finite.Card
import Mathbin.GroupTheory.Commutator
import Mathbin.GroupTheory.Finiteness
+#align_import group_theory.abelianization from "leanprover-community/mathlib"@"34ee86e6a59d911a8e4f89b68793ee7577ae79c7"
+
/-!
# The abelianization of a group
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -47,9 +47,11 @@ deriving Subgroup.Normal
#align commutator commutator
-/
+#print commutator_def /-
theorem commutator_def : commutator G = ⁅(⊤ : Subgroup G), ⊤⁆ :=
rfl
#align commutator_def commutator_def
+-/
#print commutator_eq_closure /-
theorem commutator_eq_closure : commutator G = Subgroup.closure (commutatorSet G) := by
@@ -83,6 +85,7 @@ theorem rank_commutator_le_card [Finite (commutatorSet G)] :
#align rank_commutator_le_card rank_commutator_le_card
-/
+#print commutator_centralizer_commutator_le_center /-
theorem commutator_centralizer_commutator_le_center :
⁅(commutator G).centralizer, (commutator G).centralizer⁆ ≤ Subgroup.center G :=
by
@@ -94,6 +97,7 @@ theorem commutator_centralizer_commutator_le_center :
rw [Subgroup.commutator_comm, Subgroup.commutator_eq_bot_iff_le_centralizer]
exact Set.centralizer_subset (Subgroup.commutator_mono le_top le_top)
#align commutator_centralizer_commutator_le_center commutator_centralizer_commutator_le_center
+-/
#print Abelianization /-
/-- The abelianization of G is the quotient of G by its commutator subgroup. -/
@@ -135,10 +139,12 @@ def of : G →* Abelianization G where
#align abelianization.of Abelianization.of
-/
+#print Abelianization.mk_eq_of /-
@[simp]
theorem mk_eq_of (a : G) : Quot.mk _ a = of a :=
rfl
#align abelianization.mk_eq_of Abelianization.mk_eq_of
+-/
section lift
@@ -147,12 +153,14 @@ section lift
-- Let `A` be an abelian group and let `f` be a group homomorphism from `G` to `A`.
variable {A : Type v} [CommGroup A] (f : G →* A)
+#print Abelianization.commutator_subset_ker /-
theorem commutator_subset_ker : commutator G ≤ f.ker :=
by
rw [commutator_eq_closure, Subgroup.closure_le]
rintro x ⟨p, q, rfl⟩
simp [MonoidHom.mem_ker, mul_right_comm (f p) (f q), commutatorElement_def]
#align abelianization.commutator_subset_ker Abelianization.commutator_subset_ker
+-/
#print Abelianization.lift /-
/-- If `f : G → A` is a group homomorphism to an abelian group, then `lift f` is the unique map from
@@ -166,17 +174,21 @@ def lift : (G →* A) ≃ (Abelianization G →* A)
#align abelianization.lift Abelianization.lift
-/
+#print Abelianization.lift.of /-
@[simp]
theorem lift.of (x : G) : lift f (of x) = f x :=
rfl
#align abelianization.lift.of Abelianization.lift.of
+-/
+#print Abelianization.lift.unique /-
theorem lift.unique (φ : Abelianization G →* A)
-- hφ : φ agrees with f on the image of G in Gᵃᵇ
(hφ : ∀ x : G, φ (of x) = f x)
{x : Abelianization G} : φ x = lift f x :=
QuotientGroup.induction_on x hφ
#align abelianization.lift.unique Abelianization.lift.unique
+-/
#print Abelianization.lift_of /-
@[simp]
@@ -208,10 +220,12 @@ def map : Abelianization G →* Abelianization H :=
#align abelianization.map Abelianization.map
-/
+#print Abelianization.map_of /-
@[simp]
theorem map_of (x : G) : map f (of x) = of (f x) :=
rfl
#align abelianization.map_of Abelianization.map_of
+-/
#print Abelianization.map_id /-
@[simp]
@@ -227,11 +241,13 @@ theorem map_comp {I : Type w} [Group I] (g : H →* I) : (map g).comp (map f) =
#align abelianization.map_comp Abelianization.map_comp
-/
+#print Abelianization.map_map_apply /-
@[simp]
theorem map_map_apply {I : Type w} [Group I] {g : H →* I} {x : Abelianization G} :
map g (map f x) = map (g.comp f) x :=
MonoidHom.congr_fun (map_comp _ _) x
#align abelianization.map_map_apply Abelianization.map_map_apply
+-/
end Map
@@ -241,6 +257,7 @@ section AbelianizationCongr
variable {G} {H : Type v} [Group H] (e : G ≃* H)
+#print MulEquiv.abelianizationCongr /-
/-- Equivalent groups have equivalent abelianizations -/
def MulEquiv.abelianizationCongr : Abelianization G ≃* Abelianization H
where
@@ -250,32 +267,42 @@ def MulEquiv.abelianizationCongr : Abelianization G ≃* Abelianization H
right_inv := by rintro ⟨a⟩; simp
map_mul' := MonoidHom.map_mul _
#align mul_equiv.abelianization_congr MulEquiv.abelianizationCongr
+-/
+#print abelianizationCongr_of /-
@[simp]
theorem abelianizationCongr_of (x : G) :
e.abelianizationCongr (Abelianization.of x) = Abelianization.of (e x) :=
rfl
#align abelianization_congr_of abelianizationCongr_of
+-/
+#print abelianizationCongr_refl /-
@[simp]
theorem abelianizationCongr_refl :
(MulEquiv.refl G).abelianizationCongr = MulEquiv.refl (Abelianization G) :=
MulEquiv.toMonoidHom_injective Abelianization.lift_of
#align abelianization_congr_refl abelianizationCongr_refl
+-/
+#print abelianizationCongr_symm /-
@[simp]
theorem abelianizationCongr_symm : e.abelianizationCongr.symm = e.symm.abelianizationCongr :=
rfl
#align abelianization_congr_symm abelianizationCongr_symm
+-/
+#print abelianizationCongr_trans /-
@[simp]
theorem abelianizationCongr_trans {I : Type v} [Group I] (e₂ : H ≃* I) :
e.abelianizationCongr.trans e₂.abelianizationCongr = (e.trans e₂).abelianizationCongr :=
MulEquiv.toMonoidHom_injective (Abelianization.hom_ext _ _ rfl)
#align abelianization_congr_trans abelianizationCongr_trans
+-/
end AbelianizationCongr
+#print Abelianization.equivOfComm /-
/-- An Abelian group is equivalent to its own abelianization. -/
@[simps]
def Abelianization.equivOfComm {H : Type _} [CommGroup H] : H ≃* Abelianization H :=
@@ -285,6 +312,7 @@ def Abelianization.equivOfComm {H : Type _} [CommGroup H] : H ≃* Abelianizatio
left_inv := fun a => rfl
right_inv := by rintro ⟨a⟩; rfl }
#align abelianization.equiv_of_comm Abelianization.equivOfComm
+-/
section commutatorRepresentatives
@@ -307,11 +335,14 @@ def closureCommutatorRepresentatives : Subgroup G :=
#align closure_commutator_representatives closureCommutatorRepresentatives
-/
+#print closureCommutatorRepresentatives_fg /-
instance closureCommutatorRepresentatives_fg [Finite (commutatorSet G)] :
Group.FG (closureCommutatorRepresentatives G) :=
Group.closure_finite_fg _
#align closure_commutator_representatives_fg closureCommutatorRepresentatives_fg
+-/
+#print rank_closureCommutatorRepresentatives_le /-
theorem rank_closureCommutatorRepresentatives_le [Finite (commutatorSet G)] :
Group.rank (closureCommutatorRepresentatives G) ≤ 2 * Nat.card (commutatorSet G) :=
by
@@ -322,7 +353,9 @@ theorem rank_closureCommutatorRepresentatives_le [Finite (commutatorSet G)] :
(add_le_add ((Finite.card_image_le _).trans (Finite.card_range_le _))
((Finite.card_image_le _).trans (Finite.card_range_le _))))
#align rank_closure_commutator_representations_le rank_closureCommutatorRepresentatives_le
+-/
+#print image_commutatorSet_closureCommutatorRepresentatives /-
theorem image_commutatorSet_closureCommutatorRepresentatives :
(closureCommutatorRepresentatives G).Subtype ''
commutatorSet (closureCommutatorRepresentatives G) =
@@ -338,14 +371,18 @@ theorem image_commutatorSet_closureCommutatorRepresentatives :
⟨_, subset_closure (Or.inr ⟨_, ⟨⟨g, hg⟩, rfl⟩, rfl⟩)⟩, rfl⟩,
hg.some_spec.some_spec⟩
#align image_commutator_set_closure_commutator_representatives image_commutatorSet_closureCommutatorRepresentatives
+-/
+#print card_commutatorSet_closureCommutatorRepresentatives /-
theorem card_commutatorSet_closureCommutatorRepresentatives :
Nat.card (commutatorSet (closureCommutatorRepresentatives G)) = Nat.card (commutatorSet G) :=
by
rw [← image_commutatorSet_closureCommutatorRepresentatives G]
exact Nat.card_congr (Equiv.Set.image _ _ (subtype_injective _))
#align card_commutator_set_closure_commutator_representatives card_commutatorSet_closureCommutatorRepresentatives
+-/
+#print card_commutator_closureCommutatorRepresentatives /-
theorem card_commutator_closureCommutatorRepresentatives :
Nat.card (commutator (closureCommutatorRepresentatives G)) = Nat.card (commutator G) :=
by
@@ -353,6 +390,7 @@ theorem card_commutator_closureCommutatorRepresentatives :
MonoidHom.map_closure, ← commutator_eq_closure]
exact Nat.card_congr (Equiv.Set.image _ _ (subtype_injective _))
#align card_commutator_closure_commutator_representatives card_commutator_closureCommutatorRepresentatives
+-/
instance [Finite (commutatorSet G)] : Finite (commutatorSet (closureCommutatorRepresentatives G)) :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -42,7 +42,8 @@ variable (G : Type u) [Group G]
/-- The commutator subgroup of a group G is the normal subgroup
generated by the commutators [p,q]=`p*q*p⁻¹*q⁻¹`. -/
def commutator : Subgroup G :=
- ⁅(⊤ : Subgroup G), ⊤⁆deriving Subgroup.Normal
+ ⁅(⊤ : Subgroup G), ⊤⁆
+deriving Subgroup.Normal
#align commutator commutator
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -46,12 +46,6 @@ def commutator : Subgroup G :=
#align commutator commutator
-/
-/- warning: commutator_def -> commutator_def is a dubious translation:
-lean 3 declaration is
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{succ u1} (Subgroup.{u1} G _inst_1) (commutator.{u1} G _inst_1) (Bracket.bracket.{u1, u1} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (Subgroup.commutator.{u1} G _inst_1) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1)) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.hasTop.{u1} G _inst_1)))
-but is expected to have type
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{succ u1} (Subgroup.{u1} G _inst_1) (commutator.{u1} G _inst_1) (Bracket.bracket.{u1, u1} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (Subgroup.commutator.{u1} G _inst_1) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1)) (Top.top.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instTopSubgroup.{u1} G _inst_1)))
-Case conversion may be inaccurate. Consider using '#align commutator_def commutator_defₓ'. -/
theorem commutator_def : commutator G = ⁅(⊤ : Subgroup G), ⊤⁆ :=
rfl
#align commutator_def commutator_def
@@ -88,12 +82,6 @@ theorem rank_commutator_le_card [Finite (commutatorSet G)] :
#align rank_commutator_le_card rank_commutator_le_card
-/
-/- warning: commutator_centralizer_commutator_le_center -> commutator_centralizer_commutator_le_center is a dubious translation:
-lean 3 declaration is
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toHasLe.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Bracket.bracket.{u1, u1} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (Subgroup.commutator.{u1} G _inst_1) (Subgroup.centralizer.{u1} G _inst_1 (commutator.{u1} G _inst_1)) (Subgroup.centralizer.{u1} G _inst_1 (commutator.{u1} G _inst_1))) (Subgroup.center.{u1} G _inst_1)
-but is expected to have type
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) (Bracket.bracket.{u1, u1} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (Subgroup.commutator.{u1} G _inst_1) (Subgroup.centralizer.{u1} G _inst_1 (commutator.{u1} G _inst_1)) (Subgroup.centralizer.{u1} G _inst_1 (commutator.{u1} G _inst_1))) (Subgroup.center.{u1} G _inst_1)
-Case conversion may be inaccurate. Consider using '#align commutator_centralizer_commutator_le_center commutator_centralizer_commutator_le_centerₓ'. -/
theorem commutator_centralizer_commutator_le_center :
⁅(commutator G).centralizer, (commutator G).centralizer⁆ ≤ Subgroup.center G :=
by
@@ -146,12 +134,6 @@ def of : G →* Abelianization G where
#align abelianization.of Abelianization.of
-/
-/- warning: abelianization.mk_eq_of -> Abelianization.mk_eq_of is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (a : G), Eq.{succ u1} (Quot.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1)))) (Quot.mk.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1))) a) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) a)
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (a : G), Eq.{succ u1} (Quot.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1)))) (Quot.mk.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1))) a) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) a)
-Case conversion may be inaccurate. Consider using '#align abelianization.mk_eq_of Abelianization.mk_eq_ofₓ'. -/
@[simp]
theorem mk_eq_of (a : G) : Quot.mk _ a = of a :=
rfl
@@ -164,12 +146,6 @@ section lift
-- Let `A` be an abelian group and let `f` be a group homomorphism from `G` to `A`.
variable {A : Type v} [CommGroup A] (f : G →* A)
-/- warning: abelianization.commutator_subset_ker -> Abelianization.commutator_subset_ker is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toHasLe.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (commutator.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) f)
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) (commutator.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) f)
-Case conversion may be inaccurate. Consider using '#align abelianization.commutator_subset_ker Abelianization.commutator_subset_kerₓ'. -/
theorem commutator_subset_ker : commutator G ≤ f.ker :=
by
rw [commutator_eq_closure, Subgroup.closure_le]
@@ -189,17 +165,11 @@ def lift : (G →* A) ≃ (Abelianization G →* A)
#align abelianization.lift Abelianization.lift
-/
-/- warning: abelianization.lift.of -> Abelianization.lift.of is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align abelianization.lift.of Abelianization.lift.ofₓ'. -/
@[simp]
theorem lift.of (x : G) : lift f (of x) = f x :=
rfl
#align abelianization.lift.of Abelianization.lift.of
-/- warning: abelianization.lift.unique -> Abelianization.lift.unique is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align abelianization.lift.unique Abelianization.lift.uniqueₓ'. -/
theorem lift.unique (φ : Abelianization G →* A)
-- hφ : φ agrees with f on the image of G in Gᵃᵇ
(hφ : ∀ x : G, φ (of x) = f x)
@@ -237,9 +207,6 @@ def map : Abelianization G →* Abelianization H :=
#align abelianization.map Abelianization.map
-/
-/- warning: abelianization.map_of -> Abelianization.map_of is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align abelianization.map_of Abelianization.map_ofₓ'. -/
@[simp]
theorem map_of (x : G) : map f (of x) = of (f x) :=
rfl
@@ -259,9 +226,6 @@ theorem map_comp {I : Type w} [Group I] (g : H →* I) : (map g).comp (map f) =
#align abelianization.map_comp Abelianization.map_comp
-/
-/- warning: abelianization.map_map_apply -> Abelianization.map_map_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align abelianization.map_map_apply Abelianization.map_map_applyₓ'. -/
@[simp]
theorem map_map_apply {I : Type w} [Group I] {g : H →* I} {x : Abelianization G} :
map g (map f x) = map (g.comp f) x :=
@@ -276,12 +240,6 @@ section AbelianizationCongr
variable {G} {H : Type v} [Group H] (e : G ≃* H)
-/- warning: mul_equiv.abelianization_congr -> MulEquiv.abelianizationCongr is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H], (MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) -> (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))))
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H], (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) -> (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))))
-Case conversion may be inaccurate. Consider using '#align mul_equiv.abelianization_congr MulEquiv.abelianizationCongrₓ'. -/
/-- Equivalent groups have equivalent abelianizations -/
def MulEquiv.abelianizationCongr : Abelianization G ≃* Abelianization H
where
@@ -292,44 +250,23 @@ def MulEquiv.abelianizationCongr : Abelianization G ≃* Abelianization H
map_mul' := MonoidHom.map_mul _
#align mul_equiv.abelianization_congr MulEquiv.abelianizationCongr
-/- warning: abelianization_congr_of -> abelianizationCongr_of is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align abelianization_congr_of abelianizationCongr_ofₓ'. -/
@[simp]
theorem abelianizationCongr_of (x : G) :
e.abelianizationCongr (Abelianization.of x) = Abelianization.of (e x) :=
rfl
#align abelianization_congr_of abelianizationCongr_of
-/- warning: abelianization_congr_refl -> abelianizationCongr_refl is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Eq.{succ u1} (MulEquiv.{u1, u1} (Abelianization.{u1} G _inst_1) (Abelianization.{u1} G _inst_1) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))))) (MulEquiv.abelianizationCongr.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.refl.{u1} G (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (MulEquiv.refl.{u1} (Abelianization.{u1} G _inst_1) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G], Eq.{succ u1} (MulEquiv.{u1, u1} (Abelianization.{u1} G _inst_1) (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))))) (MulEquiv.abelianizationCongr.{u1, u1} G _inst_1 G _inst_1 (MulEquiv.refl.{u1} G (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (MulEquiv.refl.{u1} (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))
-Case conversion may be inaccurate. Consider using '#align abelianization_congr_refl abelianizationCongr_reflₓ'. -/
@[simp]
theorem abelianizationCongr_refl :
(MulEquiv.refl G).abelianizationCongr = MulEquiv.refl (Abelianization G) :=
MulEquiv.toMonoidHom_injective Abelianization.lift_of
#align abelianization_congr_refl abelianizationCongr_refl
-/- warning: abelianization_congr_symm -> abelianizationCongr_symm is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))), Eq.{max (succ u2) (succ u1)} (MulEquiv.{u2, u1} (Abelianization.{u2} H _inst_2) (Abelianization.{u1} G _inst_1) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))))) (MulEquiv.symm.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e)) (MulEquiv.abelianizationCongr.{u2, u1} H _inst_2 G _inst_1 (MulEquiv.symm.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))) e))
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))), Eq.{max (succ u1) (succ u2)} (MulEquiv.{u2, u1} (Abelianization.{u2} H _inst_2) (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))))) (MulEquiv.symm.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e)) (MulEquiv.abelianizationCongr.{u2, u1} H _inst_2 G _inst_1 (MulEquiv.symm.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))) e))
-Case conversion may be inaccurate. Consider using '#align abelianization_congr_symm abelianizationCongr_symmₓ'. -/
@[simp]
theorem abelianizationCongr_symm : e.abelianizationCongr.symm = e.symm.abelianizationCongr :=
rfl
#align abelianization_congr_symm abelianizationCongr_symm
-/- warning: abelianization_congr_trans -> abelianizationCongr_trans is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) {I : Type.{u2}} [_inst_3 : Group.{u2} I] (e₂ : MulEquiv.{u2, u2} H I (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))) (MulOneClass.toHasMul.{u2} I (Monoid.toMulOneClass.{u2} I (DivInvMonoid.toMonoid.{u2} I (Group.toDivInvMonoid.{u2} I _inst_3))))), Eq.{max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} I _inst_3) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} I _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} I _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} I _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} I _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} I _inst_3) (Abelianization.commGroup.{u2} I _inst_3))))))) (MulEquiv.trans.{u1, u2, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (Abelianization.{u2} I _inst_3) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} I _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} I _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} I _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} I _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} I _inst_3) (Abelianization.commGroup.{u2} I _inst_3)))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e) (MulEquiv.abelianizationCongr.{u2, u2} H _inst_2 I _inst_3 e₂)) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 I _inst_3 (MulEquiv.trans.{u1, u2, u2} G H I (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))) (MulOneClass.toHasMul.{u2} I (Monoid.toMulOneClass.{u2} I (DivInvMonoid.toMonoid.{u2} I (Group.toDivInvMonoid.{u2} I _inst_3)))) e e₂))
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) {I : Type.{u2}} [_inst_3 : Group.{u2} I] (e₂ : MulEquiv.{u2, u2} H I (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))) (MulOneClass.toMul.{u2} I (Monoid.toMulOneClass.{u2} I (DivInvMonoid.toMonoid.{u2} I (Group.toDivInvMonoid.{u2} I _inst_3))))), Eq.{max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} I _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} I _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} I _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} I _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} I _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} I _inst_3) (Abelianization.commGroup.{u2} I _inst_3))))))) (MulEquiv.trans.{u1, u2, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (Abelianization.{u2} I _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} I _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} I _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} I _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} I _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} I _inst_3) (Abelianization.commGroup.{u2} I _inst_3)))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e) (MulEquiv.abelianizationCongr.{u2, u2} H _inst_2 I _inst_3 e₂)) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 I _inst_3 (MulEquiv.trans.{u1, u2, u2} G H I (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))) (MulOneClass.toMul.{u2} I (Monoid.toMulOneClass.{u2} I (DivInvMonoid.toMonoid.{u2} I (Group.toDivInvMonoid.{u2} I _inst_3)))) e e₂))
-Case conversion may be inaccurate. Consider using '#align abelianization_congr_trans abelianizationCongr_transₓ'. -/
@[simp]
theorem abelianizationCongr_trans {I : Type v} [Group I] (e₂ : H ≃* I) :
e.abelianizationCongr.trans e₂.abelianizationCongr = (e.trans e₂).abelianizationCongr :=
@@ -338,12 +275,6 @@ theorem abelianizationCongr_trans {I : Type v} [Group I] (e₂ : H ≃* I) :
end AbelianizationCongr
-/- warning: abelianization.equiv_of_comm -> Abelianization.equivOfComm is a dubious translation:
-lean 3 declaration is
- forall {H : Type.{u1}} [_inst_2 : CommGroup.{u1} H], MulEquiv.{u1, u1} H (Abelianization.{u1} H (CommGroup.toGroup.{u1} H _inst_2)) (MulOneClass.toHasMul.{u1} H (Monoid.toMulOneClass.{u1} H (DivInvMonoid.toMonoid.{u1} H (Group.toDivInvMonoid.{u1} H (CommGroup.toGroup.{u1} H _inst_2))))) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} H (CommGroup.toGroup.{u1} H _inst_2)) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} H (CommGroup.toGroup.{u1} H _inst_2)) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} H (CommGroup.toGroup.{u1} H _inst_2)) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} H (CommGroup.toGroup.{u1} H _inst_2)) (CommGroup.toGroup.{u1} (Abelianization.{u1} H (CommGroup.toGroup.{u1} H _inst_2)) (Abelianization.commGroup.{u1} H (CommGroup.toGroup.{u1} H _inst_2)))))))
-but is expected to have type
- forall {H : Type.{u1}} [_inst_2 : CommGroup.{u1} H], MulEquiv.{u1, u1} H (Abelianization.{u1} H (CommGroup.toGroup.{u1} H _inst_2)) (MulOneClass.toMul.{u1} H (Monoid.toMulOneClass.{u1} H (DivInvMonoid.toMonoid.{u1} H (Group.toDivInvMonoid.{u1} H (CommGroup.toGroup.{u1} H _inst_2))))) (MulOneClass.toMul.{u1} (Abelianization.{u1} H (CommGroup.toGroup.{u1} H _inst_2)) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} H (CommGroup.toGroup.{u1} H _inst_2)) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} H (CommGroup.toGroup.{u1} H _inst_2)) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} H (CommGroup.toGroup.{u1} H _inst_2)) (CommGroup.toGroup.{u1} (Abelianization.{u1} H (CommGroup.toGroup.{u1} H _inst_2)) (Abelianization.commGroup.{u1} H (CommGroup.toGroup.{u1} H _inst_2)))))))
-Case conversion may be inaccurate. Consider using '#align abelianization.equiv_of_comm Abelianization.equivOfCommₓ'. -/
/-- An Abelian group is equivalent to its own abelianization. -/
@[simps]
def Abelianization.equivOfComm {H : Type _} [CommGroup H] : H ≃* Abelianization H :=
@@ -375,23 +306,11 @@ def closureCommutatorRepresentatives : Subgroup G :=
#align closure_commutator_representatives closureCommutatorRepresentatives
-/
-/- warning: closure_commutator_representatives_fg -> closureCommutatorRepresentatives_fg is a dubious translation:
-lean 3 declaration is
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G] [_inst_2 : Finite.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} G) Type.{u1} (Set.hasCoeToSort.{u1} G) (commutatorSet.{u1} G _inst_1))], Group.FG.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))
-but is expected to have type
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G] [_inst_2 : Finite.{succ u1} (Set.Elem.{u1} G (commutatorSet.{u1} G _inst_1))], Group.FG.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))
-Case conversion may be inaccurate. Consider using '#align closure_commutator_representatives_fg closureCommutatorRepresentatives_fgₓ'. -/
instance closureCommutatorRepresentatives_fg [Finite (commutatorSet G)] :
Group.FG (closureCommutatorRepresentatives G) :=
Group.closure_finite_fg _
#align closure_commutator_representatives_fg closureCommutatorRepresentatives_fg
-/- warning: rank_closure_commutator_representations_le -> rank_closureCommutatorRepresentatives_le is a dubious translation:
-lean 3 declaration is
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G] [_inst_2 : Finite.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} G) Type.{u1} (Set.hasCoeToSort.{u1} G) (commutatorSet.{u1} G _inst_1))], LE.le.{0} Nat Nat.hasLe (Group.rank.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)) (closureCommutatorRepresentatives_fg.{u1} G _inst_1 _inst_2)) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat Nat.hasMul) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))) (Nat.card.{u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} G) Type.{u1} (Set.hasCoeToSort.{u1} G) (commutatorSet.{u1} G _inst_1))))
-but is expected to have type
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G] [_inst_2 : Finite.{succ u1} (Set.Elem.{u1} G (commutatorSet.{u1} G _inst_1))], LE.le.{0} Nat instLENat (Group.rank.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)) (closureCommutatorRepresentatives_fg.{u1} G _inst_1 _inst_2)) (HMul.hMul.{0, 0, 0} Nat Nat Nat (instHMul.{0} Nat instMulNat) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) (Nat.card.{u1} (Set.Elem.{u1} G (commutatorSet.{u1} G _inst_1))))
-Case conversion may be inaccurate. Consider using '#align rank_closure_commutator_representations_le rank_closureCommutatorRepresentatives_leₓ'. -/
theorem rank_closureCommutatorRepresentatives_le [Finite (commutatorSet G)] :
Group.rank (closureCommutatorRepresentatives G) ≤ 2 * Nat.card (commutatorSet G) :=
by
@@ -403,9 +322,6 @@ theorem rank_closureCommutatorRepresentatives_le [Finite (commutatorSet G)] :
((Finite.card_image_le _).trans (Finite.card_range_le _))))
#align rank_closure_commutator_representations_le rank_closureCommutatorRepresentatives_le
-/- warning: image_commutator_set_closure_commutator_representatives -> image_commutatorSet_closureCommutatorRepresentatives is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align image_commutator_set_closure_commutator_representatives image_commutatorSet_closureCommutatorRepresentativesₓ'. -/
theorem image_commutatorSet_closureCommutatorRepresentatives :
(closureCommutatorRepresentatives G).Subtype ''
commutatorSet (closureCommutatorRepresentatives G) =
@@ -422,12 +338,6 @@ theorem image_commutatorSet_closureCommutatorRepresentatives :
hg.some_spec.some_spec⟩
#align image_commutator_set_closure_commutator_representatives image_commutatorSet_closureCommutatorRepresentatives
-/- warning: card_commutator_set_closure_commutator_representatives -> card_commutatorSet_closureCommutatorRepresentatives is a dubious translation:
-lean 3 declaration is
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{1} Nat (Nat.card.{u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1))) Type.{u1} (Set.hasCoeToSort.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1))) (commutatorSet.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Nat.card.{u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} G) Type.{u1} (Set.hasCoeToSort.{u1} G) (commutatorSet.{u1} G _inst_1)))
-but is expected to have type
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{1} Nat (Nat.card.{u1} (Set.Elem.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (commutatorSet.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Nat.card.{u1} (Set.Elem.{u1} G (commutatorSet.{u1} G _inst_1)))
-Case conversion may be inaccurate. Consider using '#align card_commutator_set_closure_commutator_representatives card_commutatorSet_closureCommutatorRepresentativesₓ'. -/
theorem card_commutatorSet_closureCommutatorRepresentatives :
Nat.card (commutatorSet (closureCommutatorRepresentatives G)) = Nat.card (commutatorSet G) :=
by
@@ -435,12 +345,6 @@ theorem card_commutatorSet_closureCommutatorRepresentatives :
exact Nat.card_congr (Equiv.Set.image _ _ (subtype_injective _))
#align card_commutator_set_closure_commutator_representatives card_commutatorSet_closureCommutatorRepresentatives
-/- warning: card_commutator_closure_commutator_representatives -> card_commutator_closureCommutatorRepresentatives is a dubious translation:
-lean 3 declaration is
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{1} Nat (Nat.card.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.setLike.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (commutator.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Nat.card.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (commutator.{u1} G _inst_1)))
-but is expected to have type
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{1} Nat (Nat.card.{u1} (Subtype.{succ u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (fun (x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => Membership.mem.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.instSetLikeSubgroup.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) x (commutator.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))))) (Nat.card.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (commutator.{u1} G _inst_1))))
-Case conversion may be inaccurate. Consider using '#align card_commutator_closure_commutator_representatives card_commutator_closureCommutatorRepresentativesₓ'. -/
theorem card_commutator_closureCommutatorRepresentatives :
Nat.card (commutator (closureCommutatorRepresentatives G)) = Nat.card (commutator G) :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -287,12 +287,8 @@ def MulEquiv.abelianizationCongr : Abelianization G ≃* Abelianization H
where
toFun := Abelianization.map e.toMonoidHom
invFun := Abelianization.map e.symm.toMonoidHom
- left_inv := by
- rintro ⟨a⟩
- simp
- right_inv := by
- rintro ⟨a⟩
- simp
+ left_inv := by rintro ⟨a⟩; simp
+ right_inv := by rintro ⟨a⟩; simp
map_mul' := MonoidHom.map_mul _
#align mul_equiv.abelianization_congr MulEquiv.abelianizationCongr
@@ -355,9 +351,7 @@ def Abelianization.equivOfComm {H : Type _} [CommGroup H] : H ≃* Abelianizatio
toFun := Abelianization.of
invFun := Abelianization.lift (MonoidHom.id H)
left_inv := fun a => rfl
- right_inv := by
- rintro ⟨a⟩
- rfl }
+ right_inv := by rintro ⟨a⟩; rfl }
#align abelianization.equiv_of_comm Abelianization.equivOfComm
section commutatorRepresentatives
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -190,10 +190,7 @@ def lift : (G →* A) ≃ (Abelianization G →* A)
-/
/- warning: abelianization.lift.of -> Abelianization.lift.of is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (x : G), Eq.{succ u2} A (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) => (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) -> (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => G -> A) (MonoidHom.hasCoeToFun.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f x)
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => A) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) f x)
+<too large>
Case conversion may be inaccurate. Consider using '#align abelianization.lift.of Abelianization.lift.ofₓ'. -/
@[simp]
theorem lift.of (x : G) : lift f (of x) = f x :=
@@ -201,10 +198,7 @@ theorem lift.of (x : G) : lift f (of x) = f x :=
#align abelianization.lift.of Abelianization.lift.of
/- warning: abelianization.lift.unique -> Abelianization.lift.unique is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (φ : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), (forall (x : G), Eq.{succ u2} A (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) φ (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => G -> A) (MonoidHom.hasCoeToFun.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f x)) -> (forall {x : Abelianization.{u1} G _inst_1}, Eq.{succ u2} A (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) φ x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) => (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) -> (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) x))
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (φ : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), (forall (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => A) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) φ (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) f x)) -> (forall {x : Abelianization.{u1} G _inst_1}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => A) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) φ x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) x))
+<too large>
Case conversion may be inaccurate. Consider using '#align abelianization.lift.unique Abelianization.lift.uniqueₓ'. -/
theorem lift.unique (φ : Abelianization G →* A)
-- hφ : φ agrees with f on the image of G in Gᵃᵇ
@@ -244,10 +238,7 @@ def map : Abelianization G →* Abelianization H :=
-/
/- warning: abelianization.map_of -> Abelianization.map_of is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (x : G), Eq.{succ u2} (Abelianization.{u2} H _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u2} H _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (fun (_x : MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) => H -> (Abelianization.{u2} H _inst_3)) (MonoidHom.hasCoeToFun.{u2, u2} H (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.of.{u2} H _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) => G -> H) (MonoidHom.hasCoeToFun.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) f x))
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (fun (_x : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) => Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3)))) (MulOneClass.toMul.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3)))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3))))) (MonoidHom.monoidHomClass.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3)))))))) (Abelianization.of.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))))) f x))
+<too large>
Case conversion may be inaccurate. Consider using '#align abelianization.map_of Abelianization.map_ofₓ'. -/
@[simp]
theorem map_of (x : G) : map f (of x) = of (f x) :=
@@ -269,10 +260,7 @@ theorem map_comp {I : Type w} [Group I] (g : H →* I) : (map g).comp (map f) =
-/
/- warning: abelianization.map_map_apply -> Abelianization.map_map_apply is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) {I : Type.{u3}} [_inst_4 : Group.{u3} I] {g : MonoidHom.{u2, u3} H I (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4)))} {x : Abelianization.{u1} G _inst_1}, Eq.{succ u3} (Abelianization.{u3} I _inst_4) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (fun (_x : MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) => (Abelianization.{u2} H _inst_3) -> (Abelianization.{u3} I _inst_4)) (MonoidHom.hasCoeToFun.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.map.{u2, u3} H _inst_3 I _inst_4 g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u2} H _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (fun (_x : MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u3} I _inst_4)) (MonoidHom.hasCoeToFun.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.map.{u1, u3} G _inst_1 I _inst_4 (MonoidHom.comp.{u1, u2, u3} G H I (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4))) g f)) x)
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) {I : Type.{u3}} [_inst_4 : Group.{u3} I] {g : MonoidHom.{u2, u3} H I (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4)))} {x : Abelianization.{u1} G _inst_1}, Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u2} H _inst_3) => Abelianization.{u3} I _inst_4) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (a : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (fun (_x : Abelianization.{u2} H _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u2} H _inst_3) => Abelianization.{u3} I _inst_4) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MulOneClass.toMul.{u3} (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4))))) (MonoidHom.monoidHomClass.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))))) (Abelianization.map.{u2, u3} H _inst_3 I _inst_4 g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => Abelianization.{u3} I _inst_4) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u3} (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4))))) (MonoidHom.monoidHomClass.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))))) (Abelianization.map.{u1, u3} G _inst_1 I _inst_4 (MonoidHom.comp.{u1, u2, u3} G H I (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4))) g f)) x)
+<too large>
Case conversion may be inaccurate. Consider using '#align abelianization.map_map_apply Abelianization.map_map_applyₓ'. -/
@[simp]
theorem map_map_apply {I : Type w} [Group I] {g : H →* I} {x : Abelianization G} :
@@ -309,10 +297,7 @@ def MulEquiv.abelianizationCongr : Abelianization G ≃* Abelianization H
#align mul_equiv.abelianization_congr MulEquiv.abelianizationCongr
/- warning: abelianization_congr_of -> abelianizationCongr_of is a dubious translation:
-lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (x : G), Eq.{succ u2} (Abelianization.{u2} H _inst_2) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (fun (_x : MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u2} H _inst_2)) (MulEquiv.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (fun (_x : MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) => H -> (Abelianization.{u2} H _inst_2)) (MonoidHom.hasCoeToFun.{u2, u2} H (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (Abelianization.of.{u2} H _inst_2) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (fun (_x : MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) => G -> H) (MulEquiv.hasCoeToFun.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) e x))
-but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_2) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (fun (_x : (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) => Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))) (MulOneClass.toMul.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))))) (MonoidHom.monoidHomClass.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))))) (Abelianization.of.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))))))) e x))
+<too large>
Case conversion may be inaccurate. Consider using '#align abelianization_congr_of abelianizationCongr_ofₓ'. -/
@[simp]
theorem abelianizationCongr_of (x : G) :
@@ -425,10 +410,7 @@ theorem rank_closureCommutatorRepresentatives_le [Finite (commutatorSet G)] :
#align rank_closure_commutator_representations_le rank_closureCommutatorRepresentatives_le
/- warning: image_commutator_set_closure_commutator_representatives -> image_commutatorSet_closureCommutatorRepresentatives is a dubious translation:
-lean 3 declaration is
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) (Set.image.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) -> G) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (commutatorSet.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (commutatorSet.{u1} G _inst_1)
-but is expected to have type
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) (Set.image.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => G) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (commutatorSet.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (commutatorSet.{u1} G _inst_1)
+<too large>
Case conversion may be inaccurate. Consider using '#align image_commutator_set_closure_commutator_representatives image_commutatorSet_closureCommutatorRepresentativesₓ'. -/
theorem image_commutatorSet_closureCommutatorRepresentatives :
(closureCommutatorRepresentatives G).Subtype ''
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -150,7 +150,7 @@ def of : G →* Abelianization G where
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (a : G), Eq.{succ u1} (Quot.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1)))) (Quot.mk.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1))) a) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) a)
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (a : G), Eq.{succ u1} (Quot.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1)))) (Quot.mk.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1))) a) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) a)
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (a : G), Eq.{succ u1} (Quot.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1)))) (Quot.mk.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1))) a) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) a)
Case conversion may be inaccurate. Consider using '#align abelianization.mk_eq_of Abelianization.mk_eq_ofₓ'. -/
@[simp]
theorem mk_eq_of (a : G) : Quot.mk _ a = of a :=
@@ -193,7 +193,7 @@ def lift : (G →* A) ≃ (Abelianization G →* A)
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (x : G), Eq.{succ u2} A (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) => (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) -> (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => G -> A) (MonoidHom.hasCoeToFun.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f x)
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => A) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) f x)
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => A) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) f x)
Case conversion may be inaccurate. Consider using '#align abelianization.lift.of Abelianization.lift.ofₓ'. -/
@[simp]
theorem lift.of (x : G) : lift f (of x) = f x :=
@@ -204,7 +204,7 @@ theorem lift.of (x : G) : lift f (of x) = f x :=
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (φ : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), (forall (x : G), Eq.{succ u2} A (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) φ (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => G -> A) (MonoidHom.hasCoeToFun.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f x)) -> (forall {x : Abelianization.{u1} G _inst_1}, Eq.{succ u2} A (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) φ x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) => (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) -> (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) x))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (φ : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), (forall (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => A) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) φ (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) f x)) -> (forall {x : Abelianization.{u1} G _inst_1}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => A) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) φ x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) x))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (φ : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), (forall (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => A) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) φ (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) f x)) -> (forall {x : Abelianization.{u1} G _inst_1}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => A) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) φ x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) x))
Case conversion may be inaccurate. Consider using '#align abelianization.lift.unique Abelianization.lift.uniqueₓ'. -/
theorem lift.unique (φ : Abelianization G →* A)
-- hφ : φ agrees with f on the image of G in Gᵃᵇ
@@ -247,7 +247,7 @@ def map : Abelianization G →* Abelianization H :=
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (x : G), Eq.{succ u2} (Abelianization.{u2} H _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u2} H _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (fun (_x : MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) => H -> (Abelianization.{u2} H _inst_3)) (MonoidHom.hasCoeToFun.{u2, u2} H (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.of.{u2} H _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) => G -> H) (MonoidHom.hasCoeToFun.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) f x))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (fun (_x : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) => Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3)))) (MulOneClass.toMul.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3)))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3))))) (MonoidHom.monoidHomClass.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3)))))))) (Abelianization.of.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))))) f x))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (fun (_x : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) => Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3)))) (MulOneClass.toMul.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3)))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3))))) (MonoidHom.monoidHomClass.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3)))))))) (Abelianization.of.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) x) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => H) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))))) f x))
Case conversion may be inaccurate. Consider using '#align abelianization.map_of Abelianization.map_ofₓ'. -/
@[simp]
theorem map_of (x : G) : map f (of x) = of (f x) :=
@@ -272,7 +272,7 @@ theorem map_comp {I : Type w} [Group I] (g : H →* I) : (map g).comp (map f) =
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) {I : Type.{u3}} [_inst_4 : Group.{u3} I] {g : MonoidHom.{u2, u3} H I (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4)))} {x : Abelianization.{u1} G _inst_1}, Eq.{succ u3} (Abelianization.{u3} I _inst_4) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (fun (_x : MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) => (Abelianization.{u2} H _inst_3) -> (Abelianization.{u3} I _inst_4)) (MonoidHom.hasCoeToFun.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.map.{u2, u3} H _inst_3 I _inst_4 g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u2} H _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (fun (_x : MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u3} I _inst_4)) (MonoidHom.hasCoeToFun.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.map.{u1, u3} G _inst_1 I _inst_4 (MonoidHom.comp.{u1, u2, u3} G H I (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4))) g f)) x)
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) {I : Type.{u3}} [_inst_4 : Group.{u3} I] {g : MonoidHom.{u2, u3} H I (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4)))} {x : Abelianization.{u1} G _inst_1}, Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u2} H _inst_3) => Abelianization.{u3} I _inst_4) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (a : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (fun (_x : Abelianization.{u2} H _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u2} H _inst_3) => Abelianization.{u3} I _inst_4) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MulOneClass.toMul.{u3} (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4))))) (MonoidHom.monoidHomClass.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))))) (Abelianization.map.{u2, u3} H _inst_3 I _inst_4 g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => Abelianization.{u3} I _inst_4) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u3} (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4))))) (MonoidHom.monoidHomClass.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))))) (Abelianization.map.{u1, u3} G _inst_1 I _inst_4 (MonoidHom.comp.{u1, u2, u3} G H I (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4))) g f)) x)
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) {I : Type.{u3}} [_inst_4 : Group.{u3} I] {g : MonoidHom.{u2, u3} H I (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4)))} {x : Abelianization.{u1} G _inst_1}, Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u2} H _inst_3) => Abelianization.{u3} I _inst_4) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (a : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (fun (_x : Abelianization.{u2} H _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u2} H _inst_3) => Abelianization.{u3} I _inst_4) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MulOneClass.toMul.{u3} (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4))))) (MonoidHom.monoidHomClass.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))))) (Abelianization.map.{u2, u3} H _inst_3 I _inst_4 g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Abelianization.{u1} G _inst_1) => Abelianization.{u3} I _inst_4) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u3} (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4))))) (MonoidHom.monoidHomClass.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))))) (Abelianization.map.{u1, u3} G _inst_1 I _inst_4 (MonoidHom.comp.{u1, u2, u3} G H I (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4))) g f)) x)
Case conversion may be inaccurate. Consider using '#align abelianization.map_map_apply Abelianization.map_map_applyₓ'. -/
@[simp]
theorem map_map_apply {I : Type w} [Group I] {g : H →* I} {x : Abelianization G} :
@@ -312,7 +312,7 @@ def MulEquiv.abelianizationCongr : Abelianization G ≃* Abelianization H
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (x : G), Eq.{succ u2} (Abelianization.{u2} H _inst_2) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (fun (_x : MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u2} H _inst_2)) (MulEquiv.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (fun (_x : MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) => H -> (Abelianization.{u2} H _inst_2)) (MonoidHom.hasCoeToFun.{u2, u2} H (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (Abelianization.of.{u2} H _inst_2) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (fun (_x : MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) => G -> H) (MulEquiv.hasCoeToFun.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) e x))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_2) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (fun (_x : (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) => Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))) (MulOneClass.toMul.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))))) (MonoidHom.monoidHomClass.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))))) (Abelianization.of.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))))))) e x))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_2) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (fun (_x : (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) => Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))) (MulOneClass.toMul.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))))) (MonoidHom.monoidHomClass.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))))) (Abelianization.of.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))))))) e x))
Case conversion may be inaccurate. Consider using '#align abelianization_congr_of abelianizationCongr_ofₓ'. -/
@[simp]
theorem abelianizationCongr_of (x : G) :
@@ -428,7 +428,7 @@ theorem rank_closureCommutatorRepresentatives_le [Finite (commutatorSet G)] :
lean 3 declaration is
forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) (Set.image.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) -> G) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (commutatorSet.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (commutatorSet.{u1} G _inst_1)
but is expected to have type
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) (Set.image.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => G) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (commutatorSet.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (commutatorSet.{u1} G _inst_1)
+ forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) (Set.image.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => G) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (commutatorSet.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (commutatorSet.{u1} G _inst_1)
Case conversion may be inaccurate. Consider using '#align image_commutator_set_closure_commutator_representatives image_commutatorSet_closureCommutatorRepresentativesₓ'. -/
theorem image_commutatorSet_closureCommutatorRepresentatives :
(closureCommutatorRepresentatives G).Subtype ''
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -90,7 +90,7 @@ theorem rank_commutator_le_card [Finite (commutatorSet G)] :
/- warning: commutator_centralizer_commutator_le_center -> commutator_centralizer_commutator_le_center is a dubious translation:
lean 3 declaration is
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Bracket.bracket.{u1, u1} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (Subgroup.commutator.{u1} G _inst_1) (Subgroup.centralizer.{u1} G _inst_1 (commutator.{u1} G _inst_1)) (Subgroup.centralizer.{u1} G _inst_1 (commutator.{u1} G _inst_1))) (Subgroup.center.{u1} G _inst_1)
+ forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toHasLe.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (Bracket.bracket.{u1, u1} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (Subgroup.commutator.{u1} G _inst_1) (Subgroup.centralizer.{u1} G _inst_1 (commutator.{u1} G _inst_1)) (Subgroup.centralizer.{u1} G _inst_1 (commutator.{u1} G _inst_1))) (Subgroup.center.{u1} G _inst_1)
but is expected to have type
forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) (Bracket.bracket.{u1, u1} (Subgroup.{u1} G _inst_1) (Subgroup.{u1} G _inst_1) (Subgroup.commutator.{u1} G _inst_1) (Subgroup.centralizer.{u1} G _inst_1 (commutator.{u1} G _inst_1)) (Subgroup.centralizer.{u1} G _inst_1 (commutator.{u1} G _inst_1))) (Subgroup.center.{u1} G _inst_1)
Case conversion may be inaccurate. Consider using '#align commutator_centralizer_commutator_le_center commutator_centralizer_commutator_le_centerₓ'. -/
@@ -166,7 +166,7 @@ variable {A : Type v} [CommGroup A] (f : G →* A)
/- warning: abelianization.commutator_subset_ker -> Abelianization.commutator_subset_ker is a dubious translation:
lean 3 declaration is
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (commutator.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) f)
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toHasLe.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (SetLike.partialOrder.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)))) (commutator.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) f)
but is expected to have type
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), LE.le.{u1} (Subgroup.{u1} G _inst_1) (Preorder.toLE.{u1} (Subgroup.{u1} G _inst_1) (PartialOrder.toPreorder.{u1} (Subgroup.{u1} G _inst_1) (CompleteSemilatticeInf.toPartialOrder.{u1} (Subgroup.{u1} G _inst_1) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Subgroup.{u1} G _inst_1) (Subgroup.instCompleteLatticeSubgroup.{u1} G _inst_1))))) (commutator.{u1} G _inst_1) (MonoidHom.ker.{u1, u2} G _inst_1 A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) f)
Case conversion may be inaccurate. Consider using '#align abelianization.commutator_subset_ker Abelianization.commutator_subset_kerₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -74,7 +74,7 @@ instance commutator_characteristic : (commutator G).Characteristic :=
#align commutator_characteristic commutator_characteristic
-/
-instance [Finite (commutatorSet G)] : Group.Fg (commutator G) :=
+instance [Finite (commutatorSet G)] : Group.FG (commutator G) :=
by
rw [commutator_eq_closure]
apply Group.closure_finite_fg
@@ -398,12 +398,12 @@ def closureCommutatorRepresentatives : Subgroup G :=
/- warning: closure_commutator_representatives_fg -> closureCommutatorRepresentatives_fg is a dubious translation:
lean 3 declaration is
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G] [_inst_2 : Finite.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} G) Type.{u1} (Set.hasCoeToSort.{u1} G) (commutatorSet.{u1} G _inst_1))], Group.Fg.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))
+ forall (G : Type.{u1}) [_inst_1 : Group.{u1} G] [_inst_2 : Finite.{succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} G) Type.{u1} (Set.hasCoeToSort.{u1} G) (commutatorSet.{u1} G _inst_1))], Group.FG.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))
but is expected to have type
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G] [_inst_2 : Finite.{succ u1} (Set.Elem.{u1} G (commutatorSet.{u1} G _inst_1))], Group.Fg.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))
+ forall (G : Type.{u1}) [_inst_1 : Group.{u1} G] [_inst_2 : Finite.{succ u1} (Set.Elem.{u1} G (commutatorSet.{u1} G _inst_1))], Group.FG.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))
Case conversion may be inaccurate. Consider using '#align closure_commutator_representatives_fg closureCommutatorRepresentatives_fgₓ'. -/
instance closureCommutatorRepresentatives_fg [Finite (commutatorSet G)] :
- Group.Fg (closureCommutatorRepresentatives G) :=
+ Group.FG (closureCommutatorRepresentatives G) :=
Group.closure_finite_fg _
#align closure_commutator_representatives_fg closureCommutatorRepresentatives_fg
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -150,7 +150,7 @@ def of : G →* Abelianization G where
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (a : G), Eq.{succ u1} (Quot.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1)))) (Quot.mk.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1))) a) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) a)
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (a : G), Eq.{succ u1} (Quot.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1)))) (Quot.mk.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1))) a) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) a)
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (a : G), Eq.{succ u1} (Quot.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1)))) (Quot.mk.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1))) a) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) a)
Case conversion may be inaccurate. Consider using '#align abelianization.mk_eq_of Abelianization.mk_eq_ofₓ'. -/
@[simp]
theorem mk_eq_of (a : G) : Quot.mk _ a = of a :=
@@ -193,7 +193,7 @@ def lift : (G →* A) ≃ (Abelianization G →* A)
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (x : G), Eq.{succ u2} A (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) => (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) -> (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => G -> A) (MonoidHom.hasCoeToFun.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f x)
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => A) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) f x)
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => A) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) f x)
Case conversion may be inaccurate. Consider using '#align abelianization.lift.of Abelianization.lift.ofₓ'. -/
@[simp]
theorem lift.of (x : G) : lift f (of x) = f x :=
@@ -204,7 +204,7 @@ theorem lift.of (x : G) : lift f (of x) = f x :=
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (φ : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), (forall (x : G), Eq.{succ u2} A (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) φ (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => G -> A) (MonoidHom.hasCoeToFun.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f x)) -> (forall {x : Abelianization.{u1} G _inst_1}, Eq.{succ u2} A (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) φ x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) => (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) -> (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) x))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (φ : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), (forall (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => A) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) φ (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) f x)) -> (forall {x : Abelianization.{u1} G _inst_1}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => A) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) φ x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) x))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (φ : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), (forall (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => A) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) φ (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) f x)) -> (forall {x : Abelianization.{u1} G _inst_1}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => A) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) φ x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) x))
Case conversion may be inaccurate. Consider using '#align abelianization.lift.unique Abelianization.lift.uniqueₓ'. -/
theorem lift.unique (φ : Abelianization G →* A)
-- hφ : φ agrees with f on the image of G in Gᵃᵇ
@@ -247,7 +247,7 @@ def map : Abelianization G →* Abelianization H :=
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (x : G), Eq.{succ u2} (Abelianization.{u2} H _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u2} H _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (fun (_x : MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) => H -> (Abelianization.{u2} H _inst_3)) (MonoidHom.hasCoeToFun.{u2, u2} H (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.of.{u2} H _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) => G -> H) (MonoidHom.hasCoeToFun.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) f x))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (fun (_x : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) => Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3)))) (MulOneClass.toMul.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3)))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3))))) (MonoidHom.monoidHomClass.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3)))))))) (Abelianization.of.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))))) f x))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (fun (_x : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) => Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3)))) (MulOneClass.toMul.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3)))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3))))) (MonoidHom.monoidHomClass.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3)))))))) (Abelianization.of.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) x) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => H) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))))) f x))
Case conversion may be inaccurate. Consider using '#align abelianization.map_of Abelianization.map_ofₓ'. -/
@[simp]
theorem map_of (x : G) : map f (of x) = of (f x) :=
@@ -272,7 +272,7 @@ theorem map_comp {I : Type w} [Group I] (g : H →* I) : (map g).comp (map f) =
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) {I : Type.{u3}} [_inst_4 : Group.{u3} I] {g : MonoidHom.{u2, u3} H I (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4)))} {x : Abelianization.{u1} G _inst_1}, Eq.{succ u3} (Abelianization.{u3} I _inst_4) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (fun (_x : MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) => (Abelianization.{u2} H _inst_3) -> (Abelianization.{u3} I _inst_4)) (MonoidHom.hasCoeToFun.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.map.{u2, u3} H _inst_3 I _inst_4 g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u2} H _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (fun (_x : MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u3} I _inst_4)) (MonoidHom.hasCoeToFun.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.map.{u1, u3} G _inst_1 I _inst_4 (MonoidHom.comp.{u1, u2, u3} G H I (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4))) g f)) x)
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) {I : Type.{u3}} [_inst_4 : Group.{u3} I] {g : MonoidHom.{u2, u3} H I (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4)))} {x : Abelianization.{u1} G _inst_1}, Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u2} H _inst_3) => Abelianization.{u3} I _inst_4) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (a : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (fun (_x : Abelianization.{u2} H _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u2} H _inst_3) => Abelianization.{u3} I _inst_4) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MulOneClass.toMul.{u3} (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4))))) (MonoidHom.monoidHomClass.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))))) (Abelianization.map.{u2, u3} H _inst_3 I _inst_4 g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => Abelianization.{u3} I _inst_4) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u3} (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4))))) (MonoidHom.monoidHomClass.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))))) (Abelianization.map.{u1, u3} G _inst_1 I _inst_4 (MonoidHom.comp.{u1, u2, u3} G H I (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4))) g f)) x)
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) {I : Type.{u3}} [_inst_4 : Group.{u3} I] {g : MonoidHom.{u2, u3} H I (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4)))} {x : Abelianization.{u1} G _inst_1}, Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u2} H _inst_3) => Abelianization.{u3} I _inst_4) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (a : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (fun (_x : Abelianization.{u2} H _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u2} H _inst_3) => Abelianization.{u3} I _inst_4) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MulOneClass.toMul.{u3} (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4))))) (MonoidHom.monoidHomClass.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))))) (Abelianization.map.{u2, u3} H _inst_3 I _inst_4 g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Abelianization.{u1} G _inst_1) => Abelianization.{u3} I _inst_4) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u3} (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4))))) (MonoidHom.monoidHomClass.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))))) (Abelianization.map.{u1, u3} G _inst_1 I _inst_4 (MonoidHom.comp.{u1, u2, u3} G H I (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4))) g f)) x)
Case conversion may be inaccurate. Consider using '#align abelianization.map_map_apply Abelianization.map_map_applyₓ'. -/
@[simp]
theorem map_map_apply {I : Type w} [Group I] {g : H →* I} {x : Abelianization G} :
@@ -312,7 +312,7 @@ def MulEquiv.abelianizationCongr : Abelianization G ≃* Abelianization H
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (x : G), Eq.{succ u2} (Abelianization.{u2} H _inst_2) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (fun (_x : MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u2} H _inst_2)) (MulEquiv.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (fun (_x : MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) => H -> (Abelianization.{u2} H _inst_2)) (MonoidHom.hasCoeToFun.{u2, u2} H (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (Abelianization.of.{u2} H _inst_2) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (fun (_x : MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) => G -> H) (MulEquiv.hasCoeToFun.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) e x))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_2) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (fun (_x : (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) => Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))) (MulOneClass.toMul.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))))) (MonoidHom.monoidHomClass.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))))) (Abelianization.of.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))))))) e x))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_2) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (fun (_x : (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) => Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))) (MulOneClass.toMul.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))))) (MonoidHom.monoidHomClass.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))))) (Abelianization.of.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))))))) e x))
Case conversion may be inaccurate. Consider using '#align abelianization_congr_of abelianizationCongr_ofₓ'. -/
@[simp]
theorem abelianizationCongr_of (x : G) :
@@ -428,7 +428,7 @@ theorem rank_closureCommutatorRepresentatives_le [Finite (commutatorSet G)] :
lean 3 declaration is
forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) (Set.image.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) -> G) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (commutatorSet.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (commutatorSet.{u1} G _inst_1)
but is expected to have type
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) (Set.image.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => G) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (commutatorSet.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (commutatorSet.{u1} G _inst_1)
+ forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) (Set.image.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => G) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (commutatorSet.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (commutatorSet.{u1} G _inst_1)
Case conversion may be inaccurate. Consider using '#align image_commutator_set_closure_commutator_representatives image_commutatorSet_closureCommutatorRepresentativesₓ'. -/
theorem image_commutatorSet_closureCommutatorRepresentatives :
(closureCommutatorRepresentatives G).Subtype ''
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -150,7 +150,7 @@ def of : G →* Abelianization G where
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (a : G), Eq.{succ u1} (Quot.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1)))) (Quot.mk.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1))) a) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) a)
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (a : G), Eq.{succ u1} (Quot.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1)))) (Quot.mk.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1))) a) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) a)
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] (a : G), Eq.{succ u1} (Quot.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1)))) (Quot.mk.{succ u1} G (Setoid.r.{succ u1} G (QuotientGroup.leftRel.{u1} G _inst_1 (commutator.{u1} G _inst_1))) a) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) a)
Case conversion may be inaccurate. Consider using '#align abelianization.mk_eq_of Abelianization.mk_eq_ofₓ'. -/
@[simp]
theorem mk_eq_of (a : G) : Quot.mk _ a = of a :=
@@ -193,7 +193,7 @@ def lift : (G →* A) ≃ (Abelianization G →* A)
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (x : G), Eq.{succ u2} A (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) => (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) -> (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => G -> A) (MonoidHom.hasCoeToFun.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f x)
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Abelianization.{u1} G _inst_1) => A) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) f x)
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => A) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) f x)
Case conversion may be inaccurate. Consider using '#align abelianization.lift.of Abelianization.lift.ofₓ'. -/
@[simp]
theorem lift.of (x : G) : lift f (of x) = f x :=
@@ -204,7 +204,7 @@ theorem lift.of (x : G) : lift f (of x) = f x :=
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (φ : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), (forall (x : G), Eq.{succ u2} A (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) φ (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => G -> A) (MonoidHom.hasCoeToFun.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f x)) -> (forall {x : Abelianization.{u1} G _inst_1}, Eq.{succ u2} A (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) φ x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (Abelianization.{u1} G _inst_1) -> A) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (coeFn.{max 1 (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (fun (_x : Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) => (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) -> (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Equiv.hasCoeToFun.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) x))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (φ : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), (forall (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Abelianization.{u1} G _inst_1) => A) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) φ (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) f x)) -> (forall {x : Abelianization.{u1} G _inst_1}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Abelianization.{u1} G _inst_1) => A) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) φ x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) x))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {A : Type.{u2}} [_inst_2 : CommGroup.{u2} A] (f : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (φ : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))), (forall (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => A) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) φ (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) f x)) -> (forall {x : Abelianization.{u1} G _inst_1}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => A) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) φ x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => A) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} A (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) f) (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))))) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (fun (_x : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) => MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) _x) (Equiv.instFunLikeEquiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MonoidHom.{u1, u2} G A (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2))))) (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) A (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} A (DivInvMonoid.toMonoid.{u2} A (Group.toDivInvMonoid.{u2} A (CommGroup.toGroup.{u2} A _inst_2)))))) (Abelianization.lift.{u1, u2} G _inst_1 A _inst_2) f) x))
Case conversion may be inaccurate. Consider using '#align abelianization.lift.unique Abelianization.lift.uniqueₓ'. -/
theorem lift.unique (φ : Abelianization G →* A)
-- hφ : φ agrees with f on the image of G in Gᵃᵇ
@@ -247,7 +247,7 @@ def map : Abelianization G →* Abelianization H :=
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (x : G), Eq.{succ u2} (Abelianization.{u2} H _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u2} H _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (fun (_x : MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) => H -> (Abelianization.{u2} H _inst_3)) (MonoidHom.hasCoeToFun.{u2, u2} H (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.of.{u2} H _inst_3) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (fun (_x : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) => G -> H) (MonoidHom.hasCoeToFun.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) f x))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (fun (_x : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) => Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3)))) (MulOneClass.toMul.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3)))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3))))) (MonoidHom.monoidHomClass.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3)))))))) (Abelianization.of.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) x) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => H) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))))) f x))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (fun (_x : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) => Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3)))) (MulOneClass.toMul.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3)))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3)))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3))))) (MonoidHom.monoidHomClass.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3)))))))) (Abelianization.of.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) x) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => H) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (MonoidHom.monoidHomClass.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))))) f x))
Case conversion may be inaccurate. Consider using '#align abelianization.map_of Abelianization.map_ofₓ'. -/
@[simp]
theorem map_of (x : G) : map f (of x) = of (f x) :=
@@ -272,7 +272,7 @@ theorem map_comp {I : Type w} [Group I] (g : H →* I) : (map g).comp (map f) =
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) {I : Type.{u3}} [_inst_4 : Group.{u3} I] {g : MonoidHom.{u2, u3} H I (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4)))} {x : Abelianization.{u1} G _inst_1}, Eq.{succ u3} (Abelianization.{u3} I _inst_4) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (fun (_x : MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) => (Abelianization.{u2} H _inst_3) -> (Abelianization.{u3} I _inst_4)) (MonoidHom.hasCoeToFun.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.map.{u2, u3} H _inst_3 I _inst_4 g) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (fun (_x : MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u2} H _inst_3)) (MonoidHom.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (fun (_x : MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u3} I _inst_4)) (MonoidHom.hasCoeToFun.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.map.{u1, u3} G _inst_1 I _inst_4 (MonoidHom.comp.{u1, u2, u3} G H I (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4))) g f)) x)
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) {I : Type.{u3}} [_inst_4 : Group.{u3} I] {g : MonoidHom.{u2, u3} H I (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4)))} {x : Abelianization.{u1} G _inst_1}, Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Abelianization.{u2} H _inst_3) => Abelianization.{u3} I _inst_4) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (a : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (fun (_x : Abelianization.{u2} H _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Abelianization.{u2} H _inst_3) => Abelianization.{u3} I _inst_4) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MulOneClass.toMul.{u3} (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4))))) (MonoidHom.monoidHomClass.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))))) (Abelianization.map.{u2, u3} H _inst_3 I _inst_4 g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Abelianization.{u1} G _inst_1) => Abelianization.{u3} I _inst_4) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u3} (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4))))) (MonoidHom.monoidHomClass.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))))) (Abelianization.map.{u1, u3} G _inst_1 I _inst_4 (MonoidHom.comp.{u1, u2, u3} G H I (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4))) g f)) x)
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_3 : Group.{u2} H] (f : MonoidHom.{u1, u2} G H (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3)))) {I : Type.{u3}} [_inst_4 : Group.{u3} I] {g : MonoidHom.{u2, u3} H I (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4)))} {x : Abelianization.{u1} G _inst_1}, Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u2} H _inst_3) => Abelianization.{u3} I _inst_4) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (a : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (fun (_x : Abelianization.{u2} H _inst_3) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u2} H _inst_3) => Abelianization.{u3} I _inst_4) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MulOneClass.toMul.{u3} (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4))))) (MonoidHom.monoidHomClass.{u2, u3} (Abelianization.{u2} H _inst_3) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))))) (Abelianization.map.{u2, u3} H _inst_3 I _inst_4 g) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_3) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3))))) (MonoidHom.monoidHomClass.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_3) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_3) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_3) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_3) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_3) (Abelianization.commGroup.{u2} H _inst_3)))))))) (Abelianization.map.{u1, u2} G _inst_1 H _inst_3 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Abelianization.{u1} G _inst_1) => Abelianization.{u3} I _inst_4) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u3} (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4))))) (MonoidHom.monoidHomClass.{u1, u3} (Abelianization.{u1} G _inst_1) (Abelianization.{u3} I _inst_4) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u3} (Abelianization.{u3} I _inst_4) (DivInvMonoid.toMonoid.{u3} (Abelianization.{u3} I _inst_4) (Group.toDivInvMonoid.{u3} (Abelianization.{u3} I _inst_4) (CommGroup.toGroup.{u3} (Abelianization.{u3} I _inst_4) (Abelianization.commGroup.{u3} I _inst_4)))))))) (Abelianization.map.{u1, u3} G _inst_1 I _inst_4 (MonoidHom.comp.{u1, u2, u3} G H I (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_3))) (Monoid.toMulOneClass.{u3} I (DivInvMonoid.toMonoid.{u3} I (Group.toDivInvMonoid.{u3} I _inst_4))) g f)) x)
Case conversion may be inaccurate. Consider using '#align abelianization.map_map_apply Abelianization.map_map_applyₓ'. -/
@[simp]
theorem map_map_apply {I : Type w} [Group I] {g : H →* I} {x : Abelianization G} :
@@ -312,7 +312,7 @@ def MulEquiv.abelianizationCongr : Abelianization G ≃* Abelianization H
lean 3 declaration is
forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (x : G), Eq.{succ u2} (Abelianization.{u2} H _inst_2) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (fun (_x : MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) => (Abelianization.{u1} G _inst_1) -> (Abelianization.{u2} H _inst_2)) (MulEquiv.hasCoeToFun.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toHasMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toHasMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (fun (_x : MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) => G -> (Abelianization.{u1} G _inst_1)) (MonoidHom.hasCoeToFun.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (Abelianization.of.{u1} G _inst_1) x)) (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (fun (_x : MonoidHom.{u2, u2} H (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) => H -> (Abelianization.{u2} H _inst_2)) (MonoidHom.hasCoeToFun.{u2, u2} H (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (Abelianization.of.{u2} H _inst_2) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (fun (_x : MulEquiv.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) => G -> H) (MulEquiv.hasCoeToFun.{u1, u2} G H (MulOneClass.toHasMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toHasMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) e x))
but is expected to have type
- forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_2) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (fun (_x : (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) => Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))) (MulOneClass.toMul.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))))) (MonoidHom.monoidHomClass.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))))) (Abelianization.of.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))))))) e x))
+ forall {G : Type.{u1}} [_inst_1 : Group.{u1} G] {H : Type.{u2}} [_inst_2 : Group.{u2} H] (e : MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) (x : G), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_2) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (a : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (fun (_x : Abelianization.{u1} G _inst_1) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Abelianization.{u1} G _inst_1) => Abelianization.{u2} H _inst_2) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2))))))) (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Abelianization.{u1} G _inst_1) (Abelianization.{u2} H _inst_2) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MulOneClass.toMul.{u2} (Abelianization.{u2} H _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} H _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} H _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} H _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} H _inst_2) (Abelianization.commGroup.{u2} H _inst_2)))))))))) (MulEquiv.abelianizationCongr.{u1, u2} G _inst_1 H _inst_2 e) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (fun (_x : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : G) => Abelianization.{u1} G _inst_1) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))) G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1))))) (MonoidHom.monoidHomClass.{u1, u1} G (Abelianization.{u1} G _inst_1) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} (Abelianization.{u1} G _inst_1) (DivInvMonoid.toMonoid.{u1} (Abelianization.{u1} G _inst_1) (Group.toDivInvMonoid.{u1} (Abelianization.{u1} G _inst_1) (CommGroup.toGroup.{u1} (Abelianization.{u1} G _inst_1) (Abelianization.commGroup.{u1} G _inst_1)))))))) (Abelianization.of.{u1} G _inst_1) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (fun (_x : (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) => Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))) (MulOneClass.toMul.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))))) (MonoidHom.monoidHomClass.{u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (DivInvMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) (Group.toDivInvMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2))) (Monoid.toMulOneClass.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (DivInvMonoid.toMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Group.toDivInvMonoid.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (CommGroup.toGroup.{u2} (Abelianization.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (Abelianization.commGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2)))))))) (Abelianization.of.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) x) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G (fun (_x : G) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : G) => H) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2))))) G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} G H (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MulOneClass.toMul.{u2} H (Monoid.toMulOneClass.{u2} H (DivInvMonoid.toMonoid.{u2} H (Group.toDivInvMonoid.{u2} H _inst_2)))))))) e x))
Case conversion may be inaccurate. Consider using '#align abelianization_congr_of abelianizationCongr_ofₓ'. -/
@[simp]
theorem abelianizationCongr_of (x : G) :
@@ -428,7 +428,7 @@ theorem rank_closureCommutatorRepresentatives_le [Finite (commutatorSet G)] :
lean 3 declaration is
forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) (Set.image.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (fun (_x : MonoidHom.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) => (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) -> G) (MonoidHom.hasCoeToFun.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) G (Monoid.toMulOneClass.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (DivInvMonoid.toMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Group.toDivInvMonoid.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subgroup.subtype.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (commutatorSet.{u1} (coeSort.{succ u1, succ (succ u1)} (Subgroup.{u1} G _inst_1) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.setLike.{u1} G _inst_1)) (closureCommutatorRepresentatives.{u1} G _inst_1)) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (commutatorSet.{u1} G _inst_1)
but is expected to have type
- forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) (Set.image.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => G) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (commutatorSet.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (commutatorSet.{u1} G _inst_1)
+ forall (G : Type.{u1}) [_inst_1 : Group.{u1} G], Eq.{succ u1} (Set.{u1} G) (Set.image.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (fun (_x : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) => G) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (MulOneClass.toMul.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (MulOneClass.toMul.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))) (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (MonoidHom.monoidHomClass.{u1, u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) G (Submonoid.toMulOneClass.{u1} G (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1))) (Subgroup.toSubmonoid.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (Monoid.toMulOneClass.{u1} G (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_1)))))) (Subgroup.subtype.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1))) (commutatorSet.{u1} (Subtype.{succ u1} G (fun (x : G) => Membership.mem.{u1, u1} G (Subgroup.{u1} G _inst_1) (SetLike.instMembership.{u1, u1} (Subgroup.{u1} G _inst_1) G (Subgroup.instSetLikeSubgroup.{u1} G _inst_1)) x (closureCommutatorRepresentatives.{u1} G _inst_1))) (Subgroup.toGroup.{u1} G _inst_1 (closureCommutatorRepresentatives.{u1} G _inst_1)))) (commutatorSet.{u1} G _inst_1)
Case conversion may be inaccurate. Consider using '#align image_commutator_set_closure_commutator_representatives image_commutatorSet_closureCommutatorRepresentativesₓ'. -/
theorem image_commutatorSet_closureCommutatorRepresentatives :
(closureCommutatorRepresentatives G).Subtype ''
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
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>
@@ -168,7 +168,7 @@ variable {A : Type v} [Monoid A]
/-- See note [partially-applied ext lemmas]. -/
@[ext]
theorem hom_ext (φ ψ : Abelianization G →* A) (h : φ.comp of = ψ.comp of) : φ = ψ :=
- MonoidHom.ext fun x => QuotientGroup.induction_on x <| FunLike.congr_fun h
+ MonoidHom.ext fun x => QuotientGroup.induction_on x <| DFunLike.congr_fun h
#align abelianization.hom_ext Abelianization.hom_ext
section Map
@@ -198,7 +198,7 @@ theorem map_comp {I : Type w} [Group I] (g : H →* I) : (map g).comp (map f) =
@[simp]
theorem map_map_apply {I : Type w} [Group I] {g : H →* I} {x : Abelianization G} :
map g (map f x) = map (g.comp f) x :=
- FunLike.congr_fun (map_comp _ _) x
+ DFunLike.congr_fun (map_comp _ _) x
#align abelianization.map_map_apply Abelianization.map_map_apply
end Map
@@ -100,6 +100,8 @@ instance commGroup : CommGroup (Abelianization G) :=
instance : Inhabited (Abelianization G) :=
⟨1⟩
+instance [Unique G] : Unique (Abelianization G) := Quotient.instUniqueQuotient _
+
instance [Fintype G] [DecidablePred (· ∈ commutator G)] : Fintype (Abelianization G) :=
QuotientGroup.fintype (commutator G)
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -248,7 +248,7 @@ end AbelianizationCongr
/-- An Abelian group is equivalent to its own abelianization. -/
@[simps]
-def Abelianization.equivOfComm {H : Type _} [CommGroup H] : H ≃* Abelianization H :=
+def Abelianization.equivOfComm {H : Type*} [CommGroup H] : H ≃* Abelianization H :=
{ Abelianization.of with
toFun := Abelianization.of
invFun := Abelianization.lift (MonoidHom.id H)
@@ -7,7 +7,7 @@ import Mathlib.Data.Finite.Card
import Mathlib.GroupTheory.Commutator
import Mathlib.GroupTheory.Finiteness
-#align_import group_theory.abelianization from "leanprover-community/mathlib"@"dc6c365e751e34d100e80fe6e314c3c3e0fd2988"
+#align_import group_theory.abelianization from "leanprover-community/mathlib"@"4be589053caf347b899a494da75410deb55fb3ef"
/-!
# The abelianization of a group
@@ -32,6 +32,8 @@ universe u v w
-- Let G be a group.
variable (G : Type u) [Group G]
+open Subgroup (centralizer)
+
/-- The commutator subgroup of a group G is the normal subgroup
generated by the commutators [p,q]=`p*q*p⁻¹*q⁻¹`. -/
def commutator : Subgroup G := ⁅(⊤ : Subgroup G), ⊤⁆
@@ -67,11 +69,12 @@ theorem rank_commutator_le_card [Finite (commutatorSet G)] :
#align rank_commutator_le_card rank_commutator_le_card
theorem commutator_centralizer_commutator_le_center :
- ⁅(commutator G).centralizer, (commutator G).centralizer⁆ ≤ Subgroup.center G := by
- rw [← Subgroup.centralizer_top, ← Subgroup.commutator_eq_bot_iff_le_centralizer]
- suffices ⁅⁅⊤, (commutator G).centralizer⁆, (commutator G).centralizer⁆ = ⊥ by
+ ⁅centralizer (commutator G : Set G), centralizer (commutator G)⁆ ≤ Subgroup.center G := by
+ rw [← Subgroup.centralizer_univ, ← Subgroup.coe_top, ←
+ Subgroup.commutator_eq_bot_iff_le_centralizer]
+ suffices ⁅⁅⊤, centralizer (commutator G : Set G)⁆, centralizer (commutator G : Set G)⁆ = ⊥ by
refine' Subgroup.commutator_commutator_eq_bot_of_rotate _ this
- rwa [Subgroup.commutator_comm (commutator G).centralizer]
+ rwa [Subgroup.commutator_comm (centralizer (commutator G : Set G))]
rw [Subgroup.commutator_comm, Subgroup.commutator_eq_bot_iff_le_centralizer]
exact Set.centralizer_subset (Subgroup.commutator_mono le_top le_top)
#align commutator_centralizer_commutator_le_center commutator_centralizer_commutator_le_center
@@ -2,16 +2,13 @@
Copyright (c) 2018 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Michael Howes
-
-! This file was ported from Lean 3 source module group_theory.abelianization
-! leanprover-community/mathlib commit dc6c365e751e34d100e80fe6e314c3c3e0fd2988
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Data.Finite.Card
import Mathlib.GroupTheory.Commutator
import Mathlib.GroupTheory.Finiteness
+#align_import group_theory.abelianization from "leanprover-community/mathlib"@"dc6c365e751e34d100e80fe6e314c3c3e0fd2988"
+
/-!
# The abelianization of a group
I ran codespell Mathlib
and got tired halfway through the suggestions.
@@ -123,7 +123,7 @@ theorem mk_eq_of (a : G) : Quot.mk _ a = of a :=
section lift
-- So far we have built Gᵃᵇ and proved it's an abelian group.
--- Furthremore we defined the canonical projection `of : G → Gᵃᵇ`
+-- Furthermore we defined the canonical projection `of : G → Gᵃᵇ`
-- Let `A` be an abelian group and let `f` be a group homomorphism from `G` to `A`.
variable {A : Type v} [CommGroup A] (f : G →* A)
Fg
to FG
(#3948)
Please refer to this Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Naming.20convention/near/357712556
@@ -59,7 +59,7 @@ instance commutator_characteristic : (commutator G).Characteristic :=
Subgroup.commutator_characteristic ⊤ ⊤
#align commutator_characteristic commutator_characteristic
-instance [Finite (commutatorSet G)] : Group.Fg (commutator G) := by
+instance [Finite (commutatorSet G)] : Group.FG (commutator G) := by
rw [commutator_eq_closure]
apply Group.closure_finite_fg
@@ -276,7 +276,7 @@ def closureCommutatorRepresentatives : Subgroup G :=
#align closure_commutator_representatives closureCommutatorRepresentatives
instance closureCommutatorRepresentatives_fg [Finite (commutatorSet G)] :
- Group.Fg (closureCommutatorRepresentatives G) :=
+ Group.FG (closureCommutatorRepresentatives G) :=
Group.closure_finite_fg _
#align closure_commutator_representatives_fg closureCommutatorRepresentatives_fg
by
s! (#3825)
This PR puts, with one exception, every single remaining by
that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh
. The exception is when the by
begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.
Essentially this is s/\n *by$/ by/g
, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated by
s".
@@ -72,8 +72,7 @@ theorem rank_commutator_le_card [Finite (commutatorSet G)] :
theorem commutator_centralizer_commutator_le_center :
⁅(commutator G).centralizer, (commutator G).centralizer⁆ ≤ Subgroup.center G := by
rw [← Subgroup.centralizer_top, ← Subgroup.commutator_eq_bot_iff_le_centralizer]
- suffices ⁅⁅⊤, (commutator G).centralizer⁆, (commutator G).centralizer⁆ = ⊥
- by
+ suffices ⁅⁅⊤, (commutator G).centralizer⁆, (commutator G).centralizer⁆ = ⊥ by
refine' Subgroup.commutator_commutator_eq_bot_of_rotate _ this
rwa [Subgroup.commutator_comm (commutator G).centralizer]
rw [Subgroup.commutator_comm, Subgroup.commutator_eq_bot_iff_le_centralizer]
@@ -89,7 +89,7 @@ namespace Abelianization
attribute [local instance] QuotientGroup.leftRel
-instance : CommGroup (Abelianization G) :=
+instance commGroup : CommGroup (Abelianization G) :=
{ QuotientGroup.Quotient.group _ with
mul_comm := fun x y =>
Quotient.inductionOn₂' x y fun a b =>
@@ -136,8 +136,7 @@ theorem commutator_subset_ker : commutator G ≤ f.ker := by
/-- If `f : G → A` is a group homomorphism to an abelian group, then `lift f` is the unique map
from the abelianization of a `G` to `A` that factors through `f`. -/
-def lift : (G →* A) ≃ (Abelianization G →* A)
- where
+def lift : (G →* A) ≃ (Abelianization G →* A) where
toFun f := QuotientGroup.lift _ f fun _ h => f.mem_ker.2 <| commutator_subset_ker _ h
invFun F := F.comp of
left_inv _ := MonoidHom.ext fun _ => rfl
@@ -211,8 +210,7 @@ section AbelianizationCongr
variable {G} [Group G] {H : Type v} [Group H] (e : G ≃* H)
/-- Equivalent groups have equivalent abelianizations -/
-def MulEquiv.abelianizationCongr : Abelianization G ≃* Abelianization H
- where
+def MulEquiv.abelianizationCongr : Abelianization G ≃* Abelianization H where
toFun := Abelianization.map e.toMonoidHom
invFun := Abelianization.map e.symm.toMonoidHom
left_inv := by
@@ -283,7 +281,7 @@ instance closureCommutatorRepresentatives_fg [Finite (commutatorSet G)] :
Group.closure_finite_fg _
#align closure_commutator_representatives_fg closureCommutatorRepresentatives_fg
-theorem rank_closure_commutator_representations_le [Finite (commutatorSet G)] :
+theorem rank_closureCommutatorRepresentatives_le [Finite (commutatorSet G)] :
Group.rank (closureCommutatorRepresentatives G) ≤ 2 * Nat.card (commutatorSet G) := by
rw [two_mul]
exact
@@ -291,7 +289,7 @@ theorem rank_closure_commutator_representations_le [Finite (commutatorSet G)] :
((Set.card_union_le _ _).trans
(add_le_add ((Finite.card_image_le _).trans (Finite.card_range_le _))
((Finite.card_image_le _).trans (Finite.card_range_le _))))
-#align rank_closure_commutator_representations_le rank_closure_commutator_representations_le
+#align rank_closure_commutator_representations_le rank_closureCommutatorRepresentatives_le
theorem image_commutatorSet_closureCommutatorRepresentatives :
(closureCommutatorRepresentatives G).subtype ''
@@ -300,8 +298,7 @@ theorem image_commutatorSet_closureCommutatorRepresentatives :
apply Set.Subset.antisymm
· rintro - ⟨-, ⟨g₁, g₂, rfl⟩, rfl⟩
exact ⟨g₁, g₂, rfl⟩
- ·
- exact fun g hg =>
+ · exact fun g hg =>
⟨_,
⟨⟨_, subset_closure (Or.inl ⟨_, ⟨⟨g, hg⟩, rfl⟩, rfl⟩)⟩,
⟨_, subset_closure (Or.inr ⟨_, ⟨⟨g, hg⟩, rfl⟩, rfl⟩)⟩, rfl⟩,
@@ -321,8 +318,8 @@ theorem card_commutator_closureCommutatorRepresentatives :
exact Nat.card_congr (Equiv.Set.image _ _ (subtype_injective _))
#align card_commutator_closure_commutator_representatives card_commutator_closureCommutatorRepresentatives
-instance [Finite (commutatorSet G)] : Finite (commutatorSet (closureCommutatorRepresentatives G)) :=
- by
+instance [Finite (commutatorSet G)] :
+ Finite (commutatorSet (closureCommutatorRepresentatives G)) := by
apply Nat.finite_of_card_ne_zero
rw [card_commutatorSet_closureCommutatorRepresentatives]
exact Finite.card_pos.ne'
The unported dependencies are