group_theory.abelianizationMathlib.GroupTheory.Abelianization

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

fix(group_theory/subgroup/basic): generalize 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).

Diff
@@ -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)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -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"
 
Diff
@@ -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
Diff
@@ -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
 
Diff
@@ -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
Diff
@@ -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
 -/
 
Diff
@@ -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
Diff
@@ -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
Diff
@@ -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 ''
Diff
@@ -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 ''
Diff
@@ -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ₓ'. -/
Diff
@@ -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
 
Diff
@@ -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 ''
Diff
@@ -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 ''

Changes in mathlib4

mathlib3
mathlib4
chore(*): rename FunLike to DFunLike (#9785)

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

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

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

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

Diff
@@ -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
chore: add some Unique instances (#8500)

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

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

Diff
@@ -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)
 
chore: banish Type _ and Sort _ (#6499)

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

This has nice performance benefits.

Diff
@@ -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)
chore(GroupTheory): forward-port leanprover-community/mathlib#18965 (#6147)
Diff
@@ -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
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

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

Diff
@@ -2,16 +2,13 @@
 Copyright (c) 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
 
chore: fix typos (#4518)

I ran codespell Mathlib and got tired halfway through the suggestions.

Diff
@@ -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)
 
Diff
@@ -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
 
chore: bye-bye, solo bys! (#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 bys".

Diff
@@ -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]
feat: port GroupTheory.CommutingProbability (#2284)

Co-authored-by: Moritz Firsching <firsching@google.com> Co-authored-by: int-y1 <jason_yuen2007@hotmail.com>

Diff
@@ -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 =>
chore: tidy various files (#2251)
Diff
@@ -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'
feat: port GroupTheory.Abelianization (#2215)

Dependencies 8 + 346

347 files ported (97.7%)
141937 lines ported (97.9%)
Show graph

The unported dependencies are